web-dev-qa-db-ja.com

SQL接続を開くときの算術オーバーフロー例外

基盤となる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()
13
Red Developer

私も同じ問題を抱えていました。 Lavasoftも理由でした。 Lavasoftプログラムがあるかどうかプログラムと機能をチェックインしましたが、LavasoftのWebCompanionというアプリケーションを見つけて驚きました。また、実行中のサービスLavasoftTcpServiceも見つかりました。

  1. サービスLavasoftTcpServiceを停止しました(services.mscから)
  2. プログラムと機能からWebCompanionをアンインストールしました。
  3. 上記の2つのdll(C:\ Windows\System32およびC:\ Windows\SysWOW64のLavasoftTcpService.dllおよびLavasoftTcpService64.dll)はまだ存在していました。私は彼らの名前を変えました、そして問題は消えました。

これらの手順の前に、dll名のみを変更しようとしましたが、ローカルホストを解決するのに問題がありました。127.0.0.1ではなくシステムが0.0.0.0を探していました。 Pingは、「Pingリクエストでホストローカルホストが見つかりませんでした。名前を確認して再試行してください」というエラーメッセージを表示していました。

3つのステップで問題が解決しました。

20
Ursula

同じ問題が発生しましたが、これはLavasoftTcpService64.dllが原因でした。これを取り除くことは、それではありません easy 、問題を修正しました。次のフォルダが存在するかどうかを確認します:C:\WindowsC:\Windows\System32、およびC:\Windows\SysWOW64

根本原因を見つけるためのクレジットは Nguyen Quy Hy になります。

11
Kim Gybels

犯人はLavasoftAd-AwareまたはWebCompanionであることを確認しました。 System.OverflowExceptionは、SqlConnection.Open()を呼び出すときにスローされます。 LocalDBでのみ。

興味深いことに、アプリがシングルインスタンスアプリケーションの場合は常にクラッシュが発生し、そうでない場合はランダムに発生します。

解決策はUrsulaが言ったことです。

3
seguso

同じ問題が発生したため、Azure Storage Emulatorのインストールが妨げられました。つまり、AzureStorageEmulator.exeの開始により、同様のスタックトレースと例外が生成されました。エミュレータを初期化できましたが、起動できませんでした。 Lavasoft dllを削除し、winsockスタックをリセットすることでうまくいきました。だから私のために働いて、同様にグエンクイハイとこの投稿にクレジットします。

2
David McA

entityframeworkを介してユーザーを作成しているときに同じ問題が発生し、次の手順を実行して解決策を見つけ、問題を修正しました

  1. サービスからLavasoftTcpService64サービスを停止し、
  2. プログラムと機能からWebコンパニオンをアンインストールすると、問題がまだ存在する場合に備えて動作を開始し、マシンを再起動してください。
2
Sagheer Khan

私は自分でこのエラーに遭遇し、 ここ のオプション#2が役に立ちました。

  1. コマンドプロンプトを右クリックして管理者として起動し、[管理者として実行]を選択してください。

  2. ネットワークアダプタをリセットするには、次のコマンドを入力します(Enterキーで終了します)。
    netshwinsockのリセット

  3. コンピューターを再起動します。

  4. 次の2つのファイルを削除してください。
    C:\ WINDOWS\system32\LavasoftTcpService64.dll C:\ WINDOWS\SysWOW64\LavasoftTcpService.dll(64ビットWindowsの場合のみ)

削除する代わりにファイルの名前を変更しました。

1
Ofir Winegarten