サンプル コードを実行していて、本当に奇妙な動作に行き詰まりました。この接続文字列を使用して SQL Server に接続しようとしています。
"Data Source=" + ServerName + "." + DomainName + ";Initial Catalog="+DBName+";Integrated Security = false;Persist Security Info=false;User ID=sa;Password=" & Mypassword & ";Connection Timeout=90"
どうやら私は Windows 統合認証または (SSPI) を使用していません。これを Web アプリケーションで使用すると、次のエラーが発生します。
SQL Server への接続を確立中に、ネットワーク関連またはインスタンス固有のエラーが発生しました。サーバーが見つからないか、アクセスできませんでした。インスタンス名が正しいこと、および SQL Server がリモート接続を許可するように構成されていることを確認してください。(プロバイダー: 名前付きパイプ プロバイダー、エラー: 40 - SQL Server への接続を開けませんでした)
同じ接続文字列を使用し、IIS が存在するコンピューターから実行され、正常に動作する .Net アプリケーションを作成したことに注意してください。
私が行った手順は次のとおりです。
SQL クライアントの構成を確認して開き、プロトコル tcp と名前付きパイプの両方を有効にしました。
IIS で偽装を行い、Windows 認証を使用して、IIS が私のものと同じ資格情報で動作していることを確認しました。
Wireshark を使用して 2 つの接続の違いを確認しましたが、出力を理解できませんでしたが、IIS からは常に Windows 認証を使用しようとしているようですが、Windows を使用しないように文字列を明確に作成しました。基本的に認証は、アプリケーション「not_defined_in_RFC4178@please_ignore」の両方から同じように見える接続の開始時にいくつかのネゴシエーションが発生し、IIS は常に NTLMSSP に移動し、私のユーザーはユーザー名以外でデータベースにアクセスできないことに注意しますアプリケーションからは正常にネゴシエーションが成功する一方で、IIS ではネゴシエーションが失敗するようにします。
私の質問は、これをどのように修正できるかです.IISからのSQLクライアントがWindows認証を使用することを義務付ける構成があると思いますが、それを無効にする場所や方法がわかりません
web.config
SQL Server 接続文字列の構成を使用していないことに注意してください。この問題は IIS7 で発生します。