SQL Server はローカル システムからは接続できますが、ネットワーク内のリモート システムからは接続できません。Visual Studio からのエラー コードは 40 で、Management Studio から SQL Server に接続しようとすると 1326 が表示されます。
- ファイアウォールは問題ではない
- SQL ServerからTCP/IP接続が有効になっています
- SQL Serverに接続できるPC端末が2台ありますが、3台目は接続できず、同じ接続文字列を使用しているため、接続文字列は正しいです。
SQL Server 2000です
ご協力いただければ幸いです
答え1
ODBCから接続してみてください(コントロールパネル、管理者、ODBC、新しいユーザー接続)。接続を作成し、ウィザードの最後にテストしてください。うまくいけば、問題はOLEDB接続文字列などに関係しています。
そうでない場合は、
- DNS の問題 (ping を実行するときに、正しい IP アドレスが返されることを確認してください)
- サーバーの権限の問題 (ドライブを SQL Server にマップして、再度接続を試みてください)
- SQL 権限の問題 (SQL セキュリティ パネルをチェックし、ユーザーがデフォルトのデータベースに対して db_reader 権限 (最低限) を持っていることを確認してください)
- 不正な SQL エイリアス (ODBC ウィザードの接続情報で、サーバー名が 1 回だけリストされていることを確認します。複数回リストされている場合は、SQL クライアント構成ツールをインストールして、すべての余分な SQL Server エイリアスを削除できます。これらのエイリアスは、[サーバー名] をデフォルトで別のマシンまたは無効なプロトコルにリダイレクトしている可能性があります)。
答え2
3番目の端末からサーバーにpingを実行して、両者間の接続がオンになっているかどうかを確認します。
答え3
エラー40にはいくつかの理由があります。詳細については、こちらをご覧ください。
答え4
エラー 40 と 1326 はどちらも、TCP エラーではなく、名前付きパイプ エラーを示しています。サーバーで TCP が有効になっていると書かれていますが、名前付きパイプについては何も書かれていないので、名前付きパイプを考慮に入れないことをお勧めします。名前付きパイプを明示的に無効にしないと、クライアントは常にこのプロトコルを最初に試し、名前付きパイプではファイル共有層で SMB 接続とドメイン認証が必要になるため、さまざまなエラーが発生します。前にSQL Server に到達することさえできません。2 つの方法があります。
- クライアント側で名前付きパイプを完全に無効にします。クライアントネットワークプロトコルの構成。
- 接続文字列でtcpを強制するには、
tcp:servername
接続文字列のサーバー名部分の構文を使用します。接続文字列でサーバー名パラメータを使用してクライアントネットワークライブラリを指定する方法。