首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Server 2017中的pyodbc连接

Server 2017中的pyodbc连接
EN

Stack Overflow用户
提问于 2020-11-09 15:57:28
回答 1查看 211关注 0票数 0

这是我关于堆叠溢出的第一篇文章,所以如果我做错了什么,请容忍我。

我目前正在尝试实现一个Python脚本,它从CSV文件中读取数据,将其转换为JSON对象,并将其存储在Server表中。如果我在Python中直接这样做,一切都很好,我有一个完全工作的Python脚本,它读取CSV并通过pyodbc将数据存储在Server上。

不幸的是,当我试图在sp_execute_external_script中使用类似的脚本时,我会得到一个错误,无法建立连接。

我的代码:

代码语言:javascript
复制
DECLARE @Python as nvarchar(max)

SET @Python = N'
import pyodbc

import datetime as datetime

conn_str = (
    r''DRIVER={ODBC Driver 17 for SQL Server};''
    r''SERVER=xxx.xxx.xxx.xxx;''
    r''DATABASE=xxxx;''
    r''UID=xxxxxx;''
    r''PWD=xxxx;''
)

cnxn = pyodbc.connect(conn_str)
'

EXEC sp_execute_external_script
@language = N'Python',
@script = @Python ,
@input_data_1 = N'',
@input_data_1_name = N''

错误消息

Meldung 39004,Ebene 16,Status 20,Zeile 2 Unerwarteter "Python"-Skriptfehler beim Ausführen von "sp_execute_external_script“mit HRESULT 0x80004004。Meldung 39019,Ebene 16,Status 2,Zeile 2 Externer Skriptfehler: 在执行中出错。有关更多信息,请查看输出。追溯(最近一次调用):文件"",第5行,在文件"E:\Program \Microsoft SQL Server\MSSQL14.CWDEV\MSSQL\ExtensibilityData\CWDEV01\6F73A5E0-4F82-4FEA-A5DA-7A8E7D8778D2\sqlindb.py",第53行“中,在转换cnxn = pyodbc.connect(conn_str) pyodbc.Error:('08001','08001ODBC驱动程序17用于SQL ServerNamed管道-Anbieter: Es konnte keine Verbindung zu hergestellt werden 1326。(1326) (SQLDriverConnect)') SqlSatelliteCall错误:执行中的错误。有关更多信息,请查看输出。STDOUT(En) aus外部性SqlSatelliteCall函数失败.有关更多信息,请参见控制台输出。回溯(最近一次调用):文件"E:\Program \Microsoft Server\MSSQL14.CWDEV\PYTHON_SERVICES\lib\site-packages\revoscalepy\computecontext\RxInSqlServer.py",行406,在rx_sql_satellite_call rx_native_call("SqlSatelliteCall",params)文件"E:\Program \Microsoft Server\MSSQL14.CWDEV\PYTHON_SERVICES\lib\site-packages\revoscalepy\RxSerializable.py",第291行中,rx_native_call ret = px_call(functionname,params) RuntimeError: revoscalepy函数失败。

目前,我只是尝试连接到目标服务器。顺便说一句,代码不在目标服务器上运行,它将在另一台服务器上执行。我的想法是在特定的Server上使用sp_execute_external_script与Python一起迁移平面文件中的数据,并将其存储在不同的目标SQL服务器上。

任何建议都将受到高度赞赏。

非常感谢

EN

回答 1

Stack Overflow用户

发布于 2020-11-10 09:18:44

我想通了。

windows防火墙中有一个传出规则,它阻止pyodbc连接的网络访问。

防火墙输出规则

在禁用它之后,一切都像魔法一样运转。

这里描述了机器学习服务的防火墙规则:

https://learn.microsoft.com/de-de/sql/machine-learning/security/firewall-configuration?view=sql-server-2016

致以敬意,

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64754957

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档