27

サンプル コードを実行していて、本当に奇妙な動作に行き詰まりました。この接続文字列を使用して 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 アプリケーションを作成したことに注意してください。

私が行った手順は次のとおりです。

  1. SQL クライアントの構成を確認して開き、プロトコル tcp と名前付きパイプの両方を有効にしました。

  2. IIS で偽装を行い、Windows 認証を使用して、IIS が私のものと同じ資格情報で動作していることを確認しました。

  3. Wireshark を使用して 2 つの接続の違いを確認しましたが、出力を理解できませんでしたが、IIS からは常に Windows 認証を使用しようとしているようですが、Windows を使用しないように文字列を明確に作成しました。基本的に認証は、アプリケーション「not_defined_in_RFC4178@please_ignore」の両方から同じように見える接続の開始時にいくつかのネゴシエーションが発生し、IIS は常に NTLMSSP に移動し、私のユーザーはユーザー名以外でデータベースにアクセスできないことに注意しますアプリケーションからは正常にネゴシエーションが成功する一方で、IIS ではネゴシエーションが失敗するようにします。

私の質問は、これをどのように修正できるかです.IISからのSQLクライアントがWindows認証を使用することを義務付ける構成があると思いますが、それを無効にする場所や方法がわかりません

web.configSQL Server 接続文字列の構成を使用していないことに注意してください。この問題は IIS7 で発生します。

4

8 に答える 8

7

最初にチェックする項目は次のとおりです。

  1. アプリケーション プール ユーザーがネットワーク リソースにアクセスする権限を持っていることを確認する

    • マシンにログインしているときに機能すると述べたので、アプリケーションプールユーザーをマシンにログインするユーザーに変更してみてください。
  2. web.config で偽装が有効になっているかどうかを確認します。その場合は、ユーザーがネットワーク リソースにアクセスできることを確認してください。

  3. IP アドレスを使用するように接続文字列を変更してみてください (テストとして)。これで問題が解決する場合は、何らかの DNS の問題である可能性があります。

    • IP アドレスの末尾に ,1433 が含まれていることを確認してください
    • Network Library=DBMSSOCN接続文字列に設定します。(詳細については、ConnectionStrings.com のこの記事を参照してください。)
于 2013-05-25T13:24:24.280 に答える
4

上記のように正確な接続文字列を入力した場合は、接続文字列のパスワードを&の前後で+に変更することを確認してください。

私が知っているように、C#では&を使用せずに+を使用して文字列を別の文字列に連結できるため、上記の接続文字列はまったく有効な文字列ではありません。

于 2013-05-28T11:59:02.297 に答える
3

あなたは、SQL Server が別のマシン上にあると述べています。そのマシンで SQL Server Browser サービスが実行されていることを確認する必要があります。

これは、Windows サービス管理コンソール (および他の場所) にあります。

さらに、UDP ポート 1434 がファイアウォールで開いていることを確認する必要があります。

于 2013-05-29T01:00:18.027 に答える
2

ServerName、DomainName、DBName、および MyPassword の値を確認します。それらは正しいですか?? 彼らはどのように住んでいますか?

于 2013-03-25T11:20:39.977 に答える
2

このエラーを解決する手順を確認しましょう。

1) SQL Server が稼働している必要があります。2) SQL Server 構成で TCP/IP を有効にする 3) Windows ファイアウォールでポートを開く 4) リモート接続を有効にする 5) SQL Server Browser サービスを有効にする 6) ファイアウォールで sqlbrowser.exe の例外を作成する 7) エイリアスを再作成する

ソースはこちら

それが役に立てば幸い

于 2013-05-31T16:05:45.597 に答える
0

SQL サーバーがクライアント システムによって認識されなかった可能性があります

SQLサーバーネットワークが利用できないためにエラーが発生したため、ネットワーク障害のエラーである可能性があります

于 2013-05-31T12:04:36.500 に答える