もはやそのプロジェクトからは外れているが、今の担当者だとお手上げらしく、お声がかかる。
ログを見てみた。
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してあげて解放させる(明示的にしないとしばらく保持されるらしいが、現状ほとんど放置状態;;)ぐらいだが、インパクトが大きすぎる。(後者はそれほどでもないが)
とりあえずサービスパックで様子見させてくださいが落としどころかもしれない。お客さんが許してくれれば。
ローカル グループ ポリシーの [システム暗号化:暗号化、ハッシュ、署名にFIPS準拠のアルゴリズムを使用する] を有効に設定して回避できました。
返信削除