ドメイン上の特定のコンピューターのみにSQLServerインスタンスへの接続を許可しようとしていますが、すべてのコンピューターの接続を誤ってブロックしているようです。
データベースをホストしているサーバーでファイアウォールを構成するときに、インスタンスにアクセスできるようにするコンピューターを設定した後。それらすべてをブロックします。ルールを元の状態に戻すと、機能します。
ファイアウォールルールで、次のように設定しました。
このルールを設定すると、サーバーへの接続が約60秒後にタイムアウトし、一般的な「サーバーが存在しないか、アクセスが拒否されました」というメッセージが表示されます。
使用する必要がある正しい設定は何ですか?
これは、Windows Server 2012組み込みファイアウォールを使用し、コマンドプロンプト(またはバッチスクリプト)から Netsh AdvFirewallファイアウォールコマンド を発行することで実行できます管理者として実行。
基本的に、次のようなインバウンド接続を許可します。
TCPポート番号 SQLServerインスタンスがサーバーでリッスンしている
[ localport = { any | Integer | rpc | rpc-epmap | Teredo | [ ,... ] } ]
IPポート番号が一致するネットワークパケットがこのルールに一致することを指定します。 localportは、アウトバウンドネットワークパケットの送信元ポートフィールドと比較されます。これは、インバウンドネットワークパケットの宛先ポートフィールドと比較されます。
- 整数。パケットがルールに一致するために存在しなければならない正確なポート番号を指定します。ポート値は、個々の数値〜65535、5000-5020などの範囲、またはカンマ区切りの数値と範囲のリストにすることができます。
localportには、コンマで区切って複数のエントリを指定できます。スペースを含めないでください。
localportが指定されていない場合、デフォルトはanyです。
このTCPポートのみ特定の(または一連の)IPアドレスからで接続を許可することによって
[ localip = { Addresses } ]
IPアドレスが一致するネットワークパケットがこのルールに一致することを指定します。 localipは、インバウンドネットワークパケットの宛先IPアドレスフィールドと比較されます。これは、アウトバウンドネットワークパケットの送信元IPアドレスフィールドと比較されます。
- IPアドレス。 正確なIPv4またはIPv6アドレスのみに一致します。
複数のエントリは、localipをカンマで区切って指定できます。スペースを含めないでください。
localipが指定されていない場合、デフォルトは任意です。
コマンドライン
netsh advfirewall firewall add rule name="Inbound 1433 Access Per IP Address" dir=in protocol=tcp action=allow localip=192.168.1.10,192.168.1.20,192.168.1.30
バッチスクリプトの許可
ECHO ON
SET name="Inbound 1433 Access Per IP Address"
SET dir=in
SET protocol=tcp
SET action=allow
SET localport=1433
SET localip=192.168.1.1,192.168.1.2,192.168.1.1
netsh advfirewall firewall add rule name=%name% dir=%dir% protocol=%protocol% action=%action% localip=%localip%
ルールの削除
netsh advfirewall firewall delete rule name="Inbound 1433 Access Per IP Address"