基盤となるSQLデータベースへのSQL接続を開くと非常に奇妙なArithmeticOverflowException
が発生しました(スタックトレースは以下に含まれています)。使用されているサーバーのバージョンに違いはありません(MS SQL 2005/2008/2012/2014を確認しました)。エラーは同じです。インストールされているWindowsUpdateのすべての最新の更新プログラムとパッチ。 OSはWindows8.1/10です(両方のシステムで同じことが発生します)。サーバーはローカルにインストールされ、接続はユーザーとパスワードを介して行われます。 15〜1000秒の範囲で検証された接続タイムアウト。
最も驚くべきことは、アプリケーションが正常に動作し、サーバーと適切に通信してさまざまなクエリを実行することですが、突然この例外が発生します。いくつかのウィンドウが更新された後、この例外が表示され始めたことに気づきました(どれがわからない)。
.NETコードを調べましたが、算術オーバーフローの例外が発生する原因がわかりません...
- スタックトレース -
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()
私も同じ問題を抱えていました。 Lavasoftも理由でした。 Lavasoftプログラムがあるかどうかプログラムと機能をチェックインしましたが、LavasoftのWebCompanionというアプリケーションを見つけて驚きました。また、実行中のサービスLavasoftTcpServiceも見つかりました。
これらの手順の前に、dll名のみを変更しようとしましたが、ローカルホストを解決するのに問題がありました。127.0.0.1ではなくシステムが0.0.0.0を探していました。 Pingは、「Pingリクエストでホストローカルホストが見つかりませんでした。名前を確認して再試行してください」というエラーメッセージを表示していました。
3つのステップで問題が解決しました。
同じ問題が発生しましたが、これはLavasoftTcpService64.dll
が原因でした。これを取り除くことは、それではありません easy 、問題を修正しました。次のフォルダが存在するかどうかを確認します:C:\Windows
、C:\Windows\System32
、およびC:\Windows\SysWOW64
。
根本原因を見つけるためのクレジットは Nguyen Quy Hy になります。
犯人はLavasoftAd-AwareまたはWebCompanionであることを確認しました。 System.OverflowExceptionは、SqlConnection.Open()を呼び出すときにスローされます。 LocalDBでのみ。
興味深いことに、アプリがシングルインスタンスアプリケーションの場合は常にクラッシュが発生し、そうでない場合はランダムに発生します。
解決策はUrsulaが言ったことです。
同じ問題が発生したため、Azure Storage Emulatorのインストールが妨げられました。つまり、AzureStorageEmulator.exeの開始により、同様のスタックトレースと例外が生成されました。エミュレータを初期化できましたが、起動できませんでした。 Lavasoft dllを削除し、winsockスタックをリセットすることでうまくいきました。だから私のために働いて、同様にグエンクイハイとこの投稿にクレジットします。
entityframeworkを介してユーザーを作成しているときに同じ問題が発生し、次の手順を実行して解決策を見つけ、問題を修正しました
私は自分でこのエラーに遭遇し、 ここ のオプション#2が役に立ちました。
コマンドプロンプトを右クリックして管理者として起動し、[管理者として実行]を選択してください。
ネットワークアダプタをリセットするには、次のコマンドを入力します(Enterキーで終了します)。
netshwinsockのリセットコンピューターを再起動します。
次の2つのファイルを削除してください。
C:\ WINDOWS\system32\LavasoftTcpService64.dll C:\ WINDOWS\SysWOW64\LavasoftTcpService.dll(64ビットWindowsの場合のみ)
削除する代わりにファイルの名前を変更しました。