Grund für das System.Transaktionen.TransactionInDoubtException

Ich habe 2 Jobs, Lesen und erzeugen von Daten in einer Sql Server-Datenbank. Jeder einmal in eine Weile die Arbeitsplätze Absturz mit System.Transaktionen.TransactionInDoubtException. Die genauen StackTrace:

 Unhandled Exception: System.Transactions.TransactionInDoubtException: The transaction is in doubt. ---> System.Data.SqlClient.SqlException: Timeout expired.  The timeout period elapsed prior to completion of the operation or the server is not responding. ---> System.ComponentModel.Win32Exception: The wait operation timed out. Exitcode: -532462766
    --- End of inner exception stack trace ---
    at System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj, Boolean callerHasConnectionLock, Boolean asyncClose)
    at System.Data.SqlClient.TdsParserStateObject.ReadSniError(TdsParserStateObject stateObj, UInt32 error)
    at System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection, Action`1 wrapCloseInAction)
    at System.Data.SqlClient.TdsParserStateObject.TryReadNetworkPacket()
    at System.Data.SqlClient.TdsParserStateObject.TryPrepareBuffer()
    at System.Data.SqlClient.TdsParserStateObject.ReadSniSyncOverAsync()
    at System.Data.SqlClient.TdsParser.TryRun(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj, Boolean& dataReady)
    at System.Data.SqlClient.TdsParserStateObject.TryReadByte(Byte& value)
    at System.Data.SqlClient.TdsParser.Run(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj)

Googelte ich ein bisschen und fand etwas über MSDTC, aber ich glaube, das kann nicht das problem sein, da die Transaktion sollte lokal sein, da die jobs nur auf einer einzigen Datenbank. Die folgende Abfrage:

SELECT cntr_value AS NumOfDeadLocks
  FROM sys.dm_os_performance_counters
 WHERE object_name = 'SQLServer:Locks'
   AND counter_name = 'Number of Deadlocks/sec'
   AND instance_name = '_Total'

zeigt, dass es keine deadlocks auf der Datenbank, so dass deadlocks können nicht der Grund sein. Ich konnte nicht finden, dass jede andere Ressource auf dem internet, gibt genaue Informationen über die Ursache der Ausnahme. Also hat jemand eine Idee was der Grund sein könnte oder wie man die Wurzel dieses Fehlers?

InformationsquelleAutor Tim de Putter | 2014-04-16

Schreibe einen Kommentar