2016-08-08 6 views
1

Ich versuche, eine gespeicherte Prozedur aus einem Python-Skript über Pymssql auszuführen, das mit einem Verbindungsserver kommuniziert. Die SP funktioniert, wenn manuell ausgeführt, aber wenn sie aus dem Python-Skript fehlerfrei lief aus mit:Fehler beim Ausführen der gespeicherten Prozedur, die den verknüpften Server mit PyMSSQL referenziert

(7391, 'The operation could not be performed because OLE DB 
provider"SQLNCLI11" for linked server "DBLOG" was unable to begin a 
distributed transaction.DB-Lib error message 20018, severity 16: 
\nGeneral SQL Server error: Check messages from the SQL Server\n') 

Ich habe nicht in der Lage, etwas zu finden, dass dies als Einschränkung innerhalb pymssql verweist selbst. Ich bin mir nicht sicher, wo ich anfangen soll. Ich mache ziemlich viel Arbeit mit Pymssql und hatte nie irgendwelche Verbindungsprobleme, und ich habe überprüft, dass die Anmeldung, die ich verwende, ausreichende Berechtigungen hat (ich habe sogar versucht, SA zu verwenden).

Irgendwelche Ideen?

Vielen Dank!

Antwort

3

Ich konnte das Problem mit einem SP neu erstellen, die eine Aktualisierung auf dem Verbindungsserver, zB

war versucht zu tun
UPDATE LINKEDSERVERNAME...TableName SET ... 

obwohl meine Fehlermeldung etwas anders

(8501, „MSDTC auf Server 'PANORAMA \ SQLEXPRESS' ist unavailable.DB-Lib Fehlermeldung 20018, ...

ich konnte das Problem vermeiden, indem sie einHinzufügenArgument bis zum Ende meiner pymssql.connect Anruf.

Wenn aus irgendeinem Grund autocommit=True Verwendung ist nicht gut für Sie dann einen Blick auf

MSDTC on server 'server is unavailable

Informationen über MSDTC zu konfigurieren.

+0

Dies behoben dieses Problem perfekt! Jetzt arbeite ich nur noch durch die Probleme meines gespeicherten Proc, die scheinbar zufällig ausgehen. Ich nahm alle Druckanweisungen heraus und setzte nocount ab, und das schien so zu sein, als hätte es behoben. Aber jetzt passiert es wieder und wieder. – Jacob

Verwandte Themen