2012年8月7日火曜日

[SQL Server] ERROR [08001] [Microsoft][ODBC SQL Server Driver][Shared Memory]SSL セキュリティ エラー

現地で異常が発生したとのこと。
もはやそのプロジェクトからは外れているが、今の担当者だとお手上げらしく、お声がかかる。

ログを見てみた。



ERROR [08001] [Microsoft][ODBC SQL Server Driver][Shared Memory]SSL セキュリティ エラー
ERROR [01000] [Microsoft][ODBC SQL Server Driver][Shared Memory]ConnectionOpen (SECDoClientHandshake()).
   場所 System.Data.Odbc.OdbcConnection.HandleError(OdbcHandle hrHandle, RetCode retcode)
   場所 System.Data.Odbc.OdbcConnectionHandle..ctor(OdbcConnection connection, OdbcConnectionString constr, OdbcEnvironmentHandle environmentHandle)
   場所 System.Data.Odbc.OdbcConnectionOpen..ctor(OdbcConnection outerConnection, OdbcConnectionString connectionOptions)
   場所 System.Data.Odbc.OdbcConnectionFactory.CreateConnection(DbConnectionOptions options, Object poolGroupProviderInfo, DbConnectionPool pool, DbConnection owningObject)
   場所 System.Data.ProviderBase.DbConnectionFactory.CreateNonPooledConnection(DbConnection owningConnection, DbConnectionPoolGroup poolGroup)
   場所 System.Data.ProviderBase.DbConnectionFactory.GetConnection(DbConnection owningConnection)
   場所 System.Data.ProviderBase.DbConnectionClosed.OpenConnection(DbConnection outerConnection, DbConnectionFactory connectionFactory)
   場所 System.Data.Odbc.OdbcConnection.Open()
   場所 System.Data.Common.DbDataAdapter.QuietOpen(IDbConnection connection, ConnectionState& originalState)
   場所 System.Data.Common.DbDataAdapter.FillInternal(DataSet dataset, DataTable[] datatables, Int32 startRecord, Int32 maxRecords, String srcTable, IDbCommand command, CommandBehavior behavior)
   場所 System.Data.Common.DbDataAdapter.Fill(DataTable[] dataTables, Int32 startRecord, Int32 maxRecords, IDbCommand command, CommandBehavior behavior)
   場所 System.Data.Common.DbDataAdapter.Fill(DataTable dataTable)


うん、わからん。


これがDBにアクセスする度に発生している。
アプリケーションを再起動したら発生しなくなったとか。

Handshakeっていうことは、要求と応答がどっかで入れ替わっちゃったのかな。



google先生に聞いてみよう。

この辺がそれっぽいけど、現地のはSQL Server2005なんだよね。


ただ、確かSPが全くあたってなかったと思うので、後者は去年の話だし、アップデートすれば解決するかも。

それにしても情報が少なすぎる。






後は、同じように困っている人が、


■接続文字列に「Trusted_Connection=yes;」付けました


とか


■レジストリをいじってみました



ぐらいしか見つからんかった。

原因がはっきりせんから再現もさせられんし、させられんイコール上記対応したところで動作確認できんし。


Microsoft のサポートになげても時間がかかりすぎるし、もしそれで不具合だと認められても対応はいつになるかわからん。


アプリ側での対処するなら、DBアクセス部分を切り離してプロセスを解放して動的にまたロードするとか、アクセス箇所(TableAdapter)をちゃんとusingしてあげて解放させる(明示的にしないとしばらく保持されるらしいが、現状ほとんど放置状態;;)ぐらいだが、インパクトが大きすぎる。(後者はそれほどでもないが)


とりあえずサービスパックで様子見させてくださいが落としどころかもしれない。お客さんが許してくれれば。

1 件のコメント:

  1. ローカル グループ ポリシーの [システム暗号化:暗号化、ハッシュ、署名にFIPS準拠のアルゴリズムを使用する] を有効に設定して回避できました。

    返信削除