У меня возникает интересная ошибка, когда я пытаюсь запустить SP на локальном SQL -сервере с двумя связанными серверами.
Цель приведенного выше изгнания - переместить данные с одного связанного сервера на другой.
Когда я запускаю SP из SSMS, он работает как чудо, но когда я запускаю его из Python Я получаю эти сексуальные сообщения об ошибках:
(
'42000', '[42000] [Microsoft][ODBC Driver 17 for SQL Server][SQL Server]The OLE DB provider "SQLNCLI11" for linked server "XXXX" reported an error. One or more arguments were reported invalid by the provider. (7399) (SQLExecDirectW)
; [42000] [Microsoft][ODBC Driver 17 for SQL Server][SQL Server]The operation could not be performed because OLE DB provider "SQLNCLI11" for linked server "XXXX" was unable to begin a distributed transaction. (7391)
; [42000] [Microsoft][ODBC Driver 17 for SQL Server][SQL Server]OLE DB provider "SQLNCLI11" for linked server "XXXX" returned message "The parameter is incorrect.". (7412)'
)
Короче, мои python сценарии (которые не с ошибками выше) выглядит следующим образом:
MyConn = pyodbc.connect(DRIVER="ODBC Driver 17 for SQL Server",SERVER=os.environ["sqlServer"],UID=os.environ["sqlUID"],DATABASE=os.environ["sqlDB"],PWD=os.environ["sqlPWD"])
Cursor = MyConn.cursor()
sqlQuerey = "exec dbo.usp_XXXXETL @LookBackDays = 0"
Cursor.execute(sqlConta)
I также проверял соединение выше; Я могу запускать операторы select для связанных серверов с python.
Что еще более раздражает, так это то, что когда я пишу это в R, это работает:
conn = odbcDriverConnect("Driver={ODBC Driver 17 for SQL Server};Server=*SameServer*;Database=*SameDB*;Uid=*Uid*;Pwd=*Pwd*;Connection Timeout=360;")
sqlExecute(
conn,
query="dbo.usp_XXXXETL @LookBackDays = 0",
fetch=FALSE,
errors=TRUE,
query_timeout=300)
Очевидно, это работает так что это не большая проблема, просто я ненавижу R-scrips и в некотором роде озадачен ошибкой.
Заранее большое спасибо за ваше время и умственные способности!