Windows 2012サーバーがあり、データ接続を作成することにより、Visual Studio Server Explorerを介してSQL Server 2008インスタンスに接続できます。 SQL Server Management Studioを使用して、そのSQL Serverに接続することもできます。しかし、何らかの理由でODBC Data Source Administratorを使用してDSNをセットアップして接続しようとすると、次のエラーが発生します。
接続に失敗しました:
SQLState: '01000'
SQLエラー:1
[Microsoft] [ODBC SQL Server Driver] [DBNETLIB] ConnectionOpen(SECCreateCredentials())。
接続に失敗しました:
SQLState: '08001'
SQLエラー:18
[Microsoft] [ODBC SQL Server Driver] [DBNETLIB] SSLセキュリティエラー
私はこれについて特に何も見つけることができず、誰かがこの問題に精通している人がいるかどうか疑問に思っています。
クライアントとサーバーのどちらも暗号化を強制しないので、ssl関連のエラーが発生するので少し混乱します。
オンにした後ODBCロギングがイベントメッセージを取得しました
SSLクライアント資格情報の作成中に致命的なエラーが発生しました。内部エラー状態は10013です。
これは私に正確な問題を引き起こしませんでしたが、同様のエラーからの修正を導きました。
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.0\Client\Enabledを0から1に反転する必要があります
SQL Server 2016がインストールされたWindows Server 2016で、TLS 1.0および1.1を無効にすると、古いサイトが1つだけ問題が発生しました(サーバー上の新しいWebサイトは問題なく動作していました)。
ターゲットビルドを4.0から4.7に更新しようとしましたが、それはそれを修正しませんでした。
問題は、OleDbDataReader
を使用してデータベースを呼び出す本当に古いコードでした。私はSqlDataReader
を使用するようにアップグレードしましたが、それでうまくいきました。
他の場所でこれを見つけられなかったので、ここの投稿が将来誰かを助けるかもしれないと思った...
SQL ServerでTLS 1.0およびTLS 1.1が無効になっている場合(これは優れたセキュリティ対策です)、クライアントマシンで無効にする必要がある場合があります。私はこの問題でWin 2012 R2サーバーを持っていました。
レジストリで:
HKLM\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\ ...
\TLS1.0\Client (and Server): set DisabledByDefault = 1, Enabled = 0
\TLS1.1\Client (and Server): set DisabledByDefault = 1, Enabled = 0
設定を有効にするには、おそらくマシンを再起動する必要があります。