[英]pyodbc connection within SQL Server 2017
這是我在 stackoverflow 上的第一篇文章,所以如果我做錯了什么,請多多包涵。
我目前正在嘗試實現一個 Python 腳本,該腳本從 CSV 文件讀取數據,將其轉換為 JSON 對象並將其存儲在 SQL Server 表中。 如果我直接在 Python 中執行此操作,一切正常,我有一個完整的 Python 腳本,它讀取 CSV 並通過 SQL Server 上的pyodbc
存儲數據。
不幸的是,當我嘗試在sp_execute_external_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 Unerwarteter "Python"-Skriptfehler beim Ausführen von "sp_execute_external_script" mit HRESULT 0x80004004。 Meldung 39019,Ebene 16,狀態 2,Zeile 2 Externer Skriptfehler:
執行時出錯。 檢查輸出以獲取更多信息。 回溯(最近一次調用):文件“”,第 5 行,在文件“E:\\Program Files\\Microsoft SQL Server\\MSSQL14.CWDEV\\MSSQL\\ExtensibilityData\\CWDEV01\\6F73A5E0-4F82-4FEA-A5DA-7A8E7D8778D2\\sqlindb”中。 py", line 53, in transform cnxn = pyodbc.connect(conn_str) pyodbc.Error: ('08001', '[08001] [Microsoft][ODBC Driver 17 for SQL Server]Named Pipes-Anbieter: Es konnte keine Verbindung zu SQL Server hergestellt werden [1326]. (1326) (SQLDriverConnect)')
SqlSatelliteCall 錯誤:執行錯誤。 檢查輸出以獲取更多信息。 STDOUT-Meldung(en) aus dem externen Skript:SqlSatelliteCall 函數失敗。 有關更多信息,請參閱控制台輸出。 回溯(最近一次調用):文件“E:\\Program Files\\Microsoft SQL Server\\MSSQL14.CWDEV\\PYTHON_SERVICES\\lib\\site-packages\\revoscalepy\\computecontext\\RxInSqlServer.py”,第 406 行,在 rx_sql_satellite_call rx_native_call("SqlSatellite_call("SqlSatellite_Call) ", params) 文件 "E:\\Program Files\\Microsoft SQL Server\\MSSQL14.CWDEV\\PYTHON_SERVICES\\lib\\site-packages\\revoscalepy\\RxSerializable.py",第 291 行,在 rx_native_call ret = px_call(functionname, params) 運行時錯誤: revoscalepy 功能失敗。
目前我只是想連接到目標服務器。 順便說一句,代碼不在目標服務器上運行,它將在不同的服務器上執行。 我的想法是在特定 SQL Server 上使用sp_execute_external_script
和 Python 將數據從平面文件中遷移出來,並將其存儲在不同的目標 SQL Server 上。
任何建議將不勝感激。
非常感謝
我想到了。
Windows 防火牆中有一個傳出規則,它阻止了 pyodbc 連接的網絡訪問。
禁用它后,一切都像一個魅力。
此處描述了機器學習服務的防火牆規則:
問候,
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.