Visual StudioのデータソースまたはSQL管理コンソール自体を介して、2台目のコンピューター(Win7 64ビットを実行する両方のコンピューター)で実行されているSQL Server 2008に接続しようとすると、奇妙な問題が発生します。
最初に接続しようとすると、タイムアウトします。 2回目の試みはうまくいきます。
2台目のコンピューターの共有に問題なくアクセスできます。アプリケーションインスタンスごとにSQLに接続しようとしたのは初めてのようです。つまり、2つのVisual Studioインスタンスを開いた場合、最初の接続では両方が失敗し、2番目の接続では成功します。インスタンスごとに2回接続する必要があります(他のアプリケーションでの失敗/成功のシーケンスに関係なく)。
私はそれが理にかなっていると思います。
何かアドバイス?
私は解決策を見つけたと思います、少なくとも私の場合はうまくいきます。私はインスタンス名を使用していますが、これは自動的にSQLサーバーサービスの動的ポートを意味します。設定を動的ポートから修正ポートに変更し、そのポートでファイアウォールを開きました。
SQL Server構成マネージャー-> SQL Serverネットワーク構成-> 'InstanceName'のプロトコル-> TCP/IP->プロパティ-> IPアドレス-> IPすべて->
ここには2つのオプションがあります。
このスクリプトは、MSからダウンロードしたポートを開く作業を簡単にするために使用しました。ここではそれを再現しています(コメントはドイツ語ですが、明白なはずです)。
@echo ========= Ports des SQL-Servers ===================
@echo Aktivieren von Port 1433 für die SQLServer-Standardinstanz
netsh firewall set portopening TCP 1433 "SQLServer"
@echo Aktivieren von Port 1434 für dedizierte Administratorverbindungen
netsh firewall set portopening TCP 1434 "SQL-Administratorverbindung"
@echo Aktivieren von Port 4022 für den konventionellen SQL Server-Service Broker
netsh firewall set portopening TCP 4022 "SQL-Service Broker"
@echo Aktivieren von Port 135 für Transact-SQL-Debugger/RPC
netsh firewall set portopening TCP 135 "SQL-Debugger/RPC"
@echo ========= Ports für Analysedienste ==============
@echo Aktivieren von Port 2383 für die SSAS-Standardinstanz
netsh firewall set portopening TCP 2383 "Analysedienste"
@echo Aktivieren von Port 2382 für den SQL Server-Browserdienst
netsh firewall set portopening TCP 2382 "SQL-Browser"
@echo ========= Verschiedene Anwendungen ==============
@echo Aktivieren von Port 80 für HTTP
netsh firewall set portopening TCP 80 "HTTP"
@echo Aktivieren von Port 443 für SSL
netsh firewall set portopening TCP 443 "SSL"
@echo Aktivieren des Ports für die Schaltfläche 'Durchsuchen' des SQL Server-Browserdiensts
netsh firewall set portopening UDP 1434 "SQL-Browser"
@echo Zulassen von Multicast-/Broadcastantwort auf UDP (Aufzählung der Browserdienste OK)
netsh firewall set multicastbroadcastresponse ENABLE
暗闇で目隠しをしてロングショットのように感じますが、役立つ場合があります。 Microsoft SQL開発者フォーラムには、同じ問題のように見えるものと考えられる修正を説明する古いスレッドがあります。彼のサーバーはWindows Server 2008を実行していますが、Win7セットアップにも関連している可能性があります。
スレッド:
スレッドから:
はい、この問題を修正しました。
Windows Server 2008はSASL LDAPバインドを拒否するように設定されていました(警告2886を参照)。
このようなバインドを拒否しないようにサーバーを構成したので、SQL Server 2008の接続は正しく機能します。
LDAP署名設定の変更に関する情報については、Microsoft KB 935834を参照してください(私は新しいユーザーなので、リンクできません)。
それが役に立てば幸い!
ここで私が推測するところは、データベースに対して AUTO_CLOSE がオンになっていることです。これは、接続時にデータベースをスピンアップする必要があることを意味します。これが初期タイムアウトの原因です。
2番目の推測は、ホスト名の解決に関連している可能性があることです。したがって、最初にホスト名を解決するのに時間がかかりすぎます(おそらくブロードキャストによるのでしょうか)が、その後の接続試行ではキャッシュされます。ホストの解決に何を使用していますか? DNSにありますか?接続文字列をIPポート形式に変更してみてください。つまり、192.168.100.100,1433
接続が成功した後にipconfig /flushdns
を実行してみて、同じ動作が得られるかどうかを確認することもできます。危険な回避策は、HOSTSファイルにルックアップを配置することですが、適切に修正する必要があります。
ファイアウォールを無効にします。テストネットワーク(ping)。 SQLサーバーへのネットワークトラフィックをスニッフィング( wireshark を使用)
VSまたはSSMSで初めて接続する前にSQLプロファイラーを実行して、SQL Serverで何が起こっているかを確認できますか?
また、イベントログをチェックして、何かが記録されているかどうかを確認しましたか?