Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python SQL Server 2017中的pyodbc连接_Python_Sql Server_Csv_Pyodbc - Fatal编程技术网

Python SQL Server 2017中的pyodbc连接

Python SQL Server 2017中的pyodbc连接,python,sql-server,csv,pyodbc,Python,Sql Server,Csv,Pyodbc,这是我在stackoverflow上的第一篇文章,如果我做错了什么,请容忍我 我目前正在尝试实现一个Python脚本,该脚本从CSV文件读取数据,将其转换为JSON对象,并将其存储在SQL Server表中。如果我直接在Python中执行此操作,那么一切都会正常工作。我有一个完整的Python脚本,它可以读取CSV并通过SQL Server上的pyodbc存储数据 不幸的是,当我尝试在sp\u execute\u external\u script中使用类似的脚本时,我得到一个错误,即无法建立连

这是我在stackoverflow上的第一篇文章,如果我做错了什么,请容忍我

我目前正在尝试实现一个Python脚本,该脚本从CSV文件读取数据,将其转换为JSON对象,并将其存储在SQL Server表中。如果我直接在Python中执行此操作,那么一切都会正常工作。我有一个完整的Python脚本,它可以读取CSV并通过SQL Server上的
pyodbc
存储数据

不幸的是,当我尝试在
sp\u execute\u external\u script
中使用类似的脚本时,我得到一个错误,即无法建立连接

我的T-SQL代码:

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,状态20,Zeile 2未经授权 “Python”-Skriptfehler beim Ausführen von“执行外部脚本” 麻省理工学院HRESULT 0x80004004。Meldung 39019,Ebene 16,状态2,Zeile 2 Externer Skriptfehler:

执行错误。检查输出以了解更多信息。回溯 (最后一次调用):文件“”中的第5行 “E:\Program Files\Microsoft SQL 服务器\MSSQL14.CWDEV\MSSQL\ExtensibilityData\CWDEV01\6F73A5E0-4F82-4FEA-A5DA-7A8E7D8778D2\sqlindb.py“, 第53行,变换中 cnxn=pyodbc.connect(conn_str)pyodbc.Error:('08001','[08001][Microsoft][ODBC驱动程序17 for SQL Server]命名管道Anbieter:Es konnte keine Verbindung zu SQL Server hergestellt werden[1326]。 (1326)(SQLDriverConnect)“)

SqlSatelliteCall错误:执行中出错。检查输出以了解更多信息 信息。外部环境标准: SqlSatelliteCall函数失败。有关详细信息,请参阅控制台输出 更多信息。回溯(最近一次调用上次):文件 “E:\Program Files\Microsoft SQL Server\MSSQL14.CWDEV\PYTHON\u SERVICES\lib\site packages\revoscalepy\computecontext\RxInSqlServer.py“, 第406行,接收sql卫星呼叫 rx_本机_调用(“SqlSatelliteCall”,参数)文件“E:\Program Files\Microsoft SQL Server\MSSQL14.CWDEV\PYTHON_SERVICES\lib\site packages\revoscalepy\RxSerializable.py“, 第291行,接收本地呼叫 ret=px_调用(functionname,params)运行时错误:revoscalepy函数失败

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

任何建议都将不胜感激

非常感谢

我想出来了

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

禁用后,一切都像一个符咒

机器学习服务的防火墙规则如下所述:

问候,