
SQL Server クライアントがローカル ネットワーク上の別のノードで実行されている SQL Server への接続を停止したのはなぜですか?
これは長い間正常に動作しています。クライアント PC (PC A) は 2 日前まで接続していました。PC A または SQL Server (MYSERVER) をホストしている PC のどちらにも変更はありません。接続しようとすると、「SQL Server への接続を確立中にネットワーク関連のエラーが発生しました。サーバーが見つからないか、アクセスできませんでした。」というエラーが表示されます。別の PC (PC B) から同じ SQL Server インスタンスに正常に接続できます。
両方の PC は C# プログラムで同じ接続文字列を使用していますが、PC A の SQL Server Management Studio からの接続も失敗することを確認しました。また、サーバー名をサーバー ノードの IP アドレスに変更すると、SQL Server Management Studio での接続が機能します。つまり、192.168.178.20\SQLEXPRESS は接続できますが、MYSERVER\SQLEXPRESS は接続できません。Windows または SQL クライアントがホスト名の解決に失敗しているようです (数日前までは解決できていましたが)。
2 台のクライアント PC とサーバー PC は Windows 10 を実行しています。ローカル ネットワークはドメインではなくワークグループです。2 台のクライアントは Windows 認証を使用してサーバーに接続しています。
PC Aで確認したところ
HOSTSファイルにアドレスが含まれていない
MYSERVERにpingすると、正しいアドレス192.168.178.20に解決されます。
SQLエイリアスはありません
PCはルーター上の正しいDNSサーバーを使用する
回避策として、ホスト ファイルに MYSERVER を含め、MYSERVER の IP アドレスを静的アドレス 192.168.178.20 に変更しましたが、これを永続的に変更するつもりはありません。
サーバー名が解決されない理由や、さらに調査するためにできることについて何かアドバイスはありますか?
答え1
答えは簡単でした。ルーターを再起動したのです。
私はこれを助けて修正しましたワイヤーシャーククライアント PC とサーバー間のパケットを比較しました。サーバーのアドレスがクライアントの Windows HOSTS ファイルにある場合 (SQL Server への接続が常に機能する場合) と HOSTS ファイルが空の場合 (クライアント PC が接続しない場合) の両方です。どちらの場合も TCP パケットが交換されているのを確認できましたが、サーバー アドレスが hosts ファイルにあるため、暗号化された接続の TLS パケットもありました。もう一方のケースでは、クライアントがサーバーに接続要求を送信しているように見えましたが、TLS 暗号化データはありませんでした。
ルーターに DNS の問題がある可能性があります。クライアントからサーバーへの ping は機能しましたが、若干の遅延がありました。クライアントはルーターからサーバー アドレスを解決して TCP パケットを正常に送信できましたが、Windows 認証を試行したときに遅延が発生し、その結果、クライアントが認証要求を正しく送信できなかった可能性があります。
とにかく、ルーターを再起動すると DNS の問題は解消され、クライアントは Windows HOSTS ファイルにサーバーのアドレスを必要とせずに接続できるようになりました。