質問: New SqlClient.SqlConnection("Server=グローバル固定IP,14333;User ID=ユーザーID;Password=パスワード;Initial Catalog=インスタンス名") ** ### 試したこと 以下サイトは一例ですが、ファイアウォールの設定・SQL serverの設定・cmdを使用したping送信等全て行っており、正常に動作する別サーバーとの設定内容の差異も確認して修正しています。 ・http://ivystar.jp/database/sql-server/how-to-be-able-to-connect-from-the-outside-in-sql-server/ ・https://qiita.com/Nanakusajp/items/7211a5721e725fc6329c
回答: すでに皆さんが仰られていることと重複する内容ではありますが、以下を確認することをお勧め致します。 SQL Serverの既定のポートは1433ですが、今回14333を使われているということで、見間違いが起こりやすいように思います。サーバーおよび接続文字列だけ14333に設定しておきながら、ファイアウォールだけ1433にしていたといったパターンはないでしょうか? ポートを変えるなら、全然違う番号に変えるほうが良いように思います。 接続文字列、ファイアウォール、SQL Server構成マネージャで開いているポートが一致しているかを落ち着いて確認してみてください。 ファイアウォールで該当ポートをブロックする設定がないかどうかチェックしてみてください。解放とブロックの両方があった場合、大抵ブロックが優先されます。セキュリティに厳しい前任者から引き継いだ場合などはありがちです。 外部からのPingに応答しているのはルーターではないでしょうか? Pingのルーティング設定までしていれば、SQL Serverマシンの応答だとは思いますが・・・。 外部からWindows PowerShellにて以下のように打って、TcpTestSucceededがTrueになるか試すほうが良いでしょう。 Test-NetConnection 111.111.111.111 -Port 14333 (111.111.111.111は本物のグローバルIPで入力してください) ルーターのルーティング設定をしていても、ルーターが該当ポートを外部に開放していない場合も、質問者さんと同じような事例に行きつきます。家庭用で使われるルーターの場合、最初からポート開放されていますのでルーティング設定だけで接続可能となりますが、YAMAHAやCiscoの業務用ルーターの場合、全ポートが閉じられている状態から、自分でポートを開けていかなければなりません。(メーカーのモデルによります) 余談ですが、業務用ルーターの設定を変える場合、先に設定ファイルのバックアップを取ることをお勧めします。設定でやらかすと全端末が一切通信できなくなる恐ろしい事態もあり得ます。