Arithmetic overflow-exception beim öffnen von SQL-Verbindung

Bekam ich sehr komisch ArithmeticOverflowException beim öffnen einer SQL-Verbindung zu der zugrunde liegenden SQL-Datenbank (stack-trace unten enthalten). Es nicht einen Unterschied machen, welche version der server verwendet wird (habe ich überprüft, MS SQL 2005/2008/2012/2014), Fehler ist immer noch der gleiche. Alle die neuesten updates und patches von Windows Update installiert. OS ist Windows 8.1 /10 (gleiche tritt auf beiden Systemen). Server ist lokal installiert und die Verbindung über Benutzer und Passwort. Timeout der Verbindung überprüft, im Bereich von 15 bis 1000 sec.

Die überraschende Sache ist, die Anwendung funktioniert einwandfrei, und kommuniziert mit dem server, richtig, die Ausführung vieler verschiedener Abfragen, aber plötzlich ist diese Ausnahme Auftritt. Ich bemerkte, dass diese Ausnahme begann, zeigt sich nach einigen windows-update (keine Ahnung welche).

Hab ich blickte in die .NET-code, aber keine Ahnung haben, was kann die Ursache für die Arithmetik-überlauf Ausnahme...

-- STACK-TRACE --

in SNIOpenSyncExWrapper(SNI_CLIENT_CONSUMER_INFO* , SNI_ConnWrapper** )
in SNINativeMethodWrapper.SNIOpenSyncEx(ConsumerInfo consumerInfo, String constring, IntPtr& pConn, Byte[] spnBuffer, Byte[] instanceName, Boolean fOverrideCache, Boolean fSync, Int32 timeout, Boolean fParallel)
in System.Data.SqlClient.SNIHandle..ctor(ConsumerInfo myInfo, String serverName, Byte[] spnBuffer, Boolean ignoreSniOpenTimeout, Int32 timeout, Byte[]& instanceName, Boolean flushCache, Boolean fSync, Boolean fParallel)
in System.Data.SqlClient.TdsParserStateObject.CreatePhysicalSNIHandle(String serverName, Boolean ignoreSniOpenTimeout, Int64 timerExpire, Byte[]& instanceName, Byte[] spnBuffer, Boolean flushCache, Boolean async, Boolean fParallel)
in System.Data.SqlClient.TdsParser.Connect(ServerInfo serverInfo, SqlInternalConnectionTds connHandler, Boolean ignoreSniOpenTimeout, Int64 timerExpire, Boolean encrypt, Boolean trustServerCert, Boolean integratedSecurity, Boolean withFailover)
in System.Data.SqlClient.SqlInternalConnectionTds.AttemptOneLogin(ServerInfo serverInfo, String newPassword, SecureString newSecurePassword, Boolean ignoreSniOpenTimeout, TimeoutTimer timeout, Boolean withFailover)
in System.Data.SqlClient.SqlInternalConnectionTds.LoginNoFailover(ServerInfo serverInfo, String newPassword, SecureString newSecurePassword, Boolean redirectedUserInstance, SqlConnectionString connectionOptions, SqlCredential credential, TimeoutTimer timeout)
in System.Data.SqlClient.SqlInternalConnectionTds.OpenLoginEnlist(TimeoutTimer timeout, SqlConnectionString connectionOptions, SqlCredential credential, String newPassword, SecureString newSecurePassword, Boolean redirectedUserInstance)
in System.Data.SqlClient.SqlInternalConnectionTds..ctor(DbConnectionPoolIdentity identity, SqlConnectionString connectionOptions, SqlCredential credential, Object providerInfo, String newPassword, SecureString newSecurePassword, Boolean redirectedUserInstance, SqlConnectionString userConnectionOptions, SessionData reconnectSessionData)
in System.Data.SqlClient.SqlConnectionFactory.CreateConnection(DbConnectionOptions options, DbConnectionPoolKey poolKey, Object poolGroupProviderInfo, DbConnectionPool pool, DbConnection owningConnection, DbConnectionOptions userOptions)
in System.Data.ProviderBase.DbConnectionFactory.CreatePooledConnection(DbConnectionPool pool, DbConnection owningObject, DbConnectionOptions options, DbConnectionPoolKey poolKey, DbConnectionOptions userOptions)
in System.Data.ProviderBase.DbConnectionPool.CreateObject(DbConnection owningObject, DbConnectionOptions userOptions, DbConnectionInternal oldConnection)
in System.Data.ProviderBase.DbConnectionPool.UserCreateRequest(DbConnection owningObject, DbConnectionOptions userOptions, DbConnectionInternal oldConnection)
in System.Data.ProviderBase.DbConnectionPool.TryGetConnection(DbConnection owningObject, UInt32 waitForMultipleObjectsTimeout, Boolean allowCreate, Boolean onlyOneCheckConnection, DbConnectionOptions userOptions, DbConnectionInternal& connection)
in System.Data.ProviderBase.DbConnectionPool.TryGetConnection(DbConnection owningObject, TaskCompletionSource`1 retry, DbConnectionOptions userOptions, DbConnectionInternal& connection)
in System.Data.ProviderBase.DbConnectionFactory.TryGetConnection(DbConnection owningConnection, TaskCompletionSource`1 retry, DbConnectionOptions userOptions, DbConnectionInternal oldConnection, DbConnectionInternal& connection)
in System.Data.ProviderBase.DbConnectionInternal.TryOpenConnectionInternal(DbConnection outerConnection, DbConnectionFactory connectionFactory, TaskCompletionSource`1 retry, DbConnectionOptions userOptions)
in System.Data.SqlClient.SqlConnection.TryOpenInner(TaskCompletionSource`1 retry)
in System.Data.SqlClient.SqlConnection.TryOpen(TaskCompletionSource`1 retry)
in System.Data.SqlClient.SqlConnection.Open()
  • Ich glaube nicht, dass Sie in der Lage sind, konsequent zu reproduzieren diese? Ist es nur eine Anwendung oder mehrere?
  • gibt es eine checked addition von ganzen zahlen irgendwo in deinem code? kannst du die vollständige Ausnahme bitte?
  • Feld - Es ist reproduzierbar und von Zeit zu Zeit sogar ziemlich oft - nicht sicher, unter welchen Bedingungen, da diese Ausnahme hatte, trat auf einigen meiner Kunden Maschinen. Somit kann ich nicht Debuggen den code von mir :/ Und genau das gleiche problem habe ich in drei verschiedenen Anwendungen (der stack-trace ist die gleiche).
  • Es ist nichts dergleichen in meinem code, da ich das nicht tun irgendwelche Berechnungen im Zusammenhang mit der Verbindung - die Ausnahme tritt in Kern .net-code. Die Ablaufverfolgung oben ist der volle stack-trace, die von der exception (frühere Operationen, bevor die Open-Methode auf die SqlConnection-Instanz aufgerufen wird, nicht relevant sind, überhaupt). Und übrigens - dies ist ein Aufruf von thread. Es ist nicht der Fall, dass mehrere threads versuchen, öffnen Sie die Verbindung.
  • Wissen Sie, welcher code-Zeile der Fehler tritt auf, und können Sie es posten und den code-block, die es enthält?
  • Sie gehen zu müssen, um festzustellen, wo der Fehler Auftritt, und anzeigen-code hier. Finden Sie die genauen Schritte, die der Benutzer tun, um erleben Sie die Fehler, welche Datensätze es tritt auf. dann nehmen Sie eine Kopie der Datenbank und kopieren Sie Ihre Schritte, setzen von breakpoints, um herauszufinden, was Los ist. Jetzt gibt es nicht genug Informationen, um zu bestimmen, die Ursache des Fehlers.
  • Wie es hier in dem stack-trace - der Fehler tritt in SNIOpenSyncExWrapper. Es ist die .NET framework von der Klasse, nicht von mir 🙂 Die Datenbank hat nichts zu tun mit dieser Ausnahme - es ist nicht in Bezug auf Daten-an alle, dies ist nur Open-Methode auf Verbindung bezeichnet, wo die exception Auftritt. Ich hoffe, jemand erlebt haben dasselbe problem und fand die Lösung bereits.
  • tbh könnte sein, am besten anmelden, ein ticket beim microsoft-support.
  • Alleman - Leider ist da die Ausnahme kommt aus dem inneren .net Sie erhalten keine Zeilennummern. Der stack ist das einzige, was ich habe. Und wenn er nur hatte, trat auf meinem computer, würde ich in der Lage zum download .Netto-Quellen und Debuggen, aber pustekuchen - funktioniert wie ein Charme auf meine Seite :/
  • Da passiert es nur auf einem Rechner bezweifle ich, es ist ein MS-Fehler. Gibt es irgendwelche login-Trigger auf Ihre Datenbank?
  • Lange - Es passiert auf vielen Maschinen, die nicht auf einem. Es gibt keine login-Trigger auf der Datenbank.

Schreibe einen Kommentar