Ich bin gerade dabei, eine Anwendung auf SQL 2008 / Server 2008 R2 x64 zu aktualisieren, und ich erkenne ein seltsames Verhalten, das ich bei SQL 2005 / Server 2003 nicht gesehen habe. Gelegentlich erhalte ich eine Ausnahme von MSDTC: The partner transaction manager has disabled its support for remote/network transactions. (Exception from HRESULT: 0x8004D025)
. Bitte beachten Sie, dass ich Netzwerktransaktionen ohne Authentifizierung aktiviert habe und diese Transaktionen in etwa 95 % der Fälle funktionieren. Aber dann schlagen einige mit dieser Meldung fehl. Es ist ein SQLBulkCopy-Objekt, wenn das relevant ist.
Ich habe die DTC-Statistiken untersucht und interessanterweise gibt es keine abgebrochene Transaktion, wenn die Transaktion diese Ausnahme auslöst, aber es wird eine abgeschlossene Transaktion aufgezeichnet. Was wirklich interessant ist, ist die Tatsache, dass der entfernte Transaktionsmanager auch eine neue Transaktion erstellt (Status "committed"). Es gibt einen zweiten Schreibvorgang als Teil der Transaktion, der erfolgreich in die Datenbank geschrieben wird, aber der erste Vorgang nicht.
In Bezug auf die Reihenfolge, in der ich diesen Fehler sehe, ist folgendes passiert:
- Aus Tabelle löschen (das funktioniert)
- Bulkcopy in neue Zeilen (dies schlägt fehl und die Ausnahme wird bei der Methode "WriteToServer" ausgelöst)
- Aufzeichnung des Schreibvorgangs erstellen (dies funktioniert).
Ich weiß, dass sowohl SQL als auch die Anwendung ihre MSDTCs für Remote-Transaktionen konfiguriert haben, da mehrere der Transaktionen erfolgreich funktionieren. Haben Sie eine Idee, warum dies der Fall ist und wie ich das Problem beheben kann?