前回作成した、VM Role 上の SQL Server に SQL Server Management Studio (SSMS) で接続するための方法をまとめてみたいと思います。
■外部からの接続について
外部から Azure の Role に接続をするためには、[InputEndpoint] を定義する必要があります。
Visual Web Developer や Visual Studio を使用すると GUI で設定することができます。
設定はサービス定義ファイル (.csdef) に追加されていますので変更をするときはパッケージをデプロイする必要があります。
SQL Server の既定のインスタンスの場合、[TCP 1433] で接続を行いますので、
以下のようなエンドポイントを作成すればいいのかなと思って試していたのですが、うまく接続ができませんでした…。
■ネットワークモニターで接続の状態を確認
クライアントの SSMS から VM Role の SQL Server に接続をしようとした際のネットワークの疎通を VM Role にインストールしているネットワークモニタで確認してみたいと思います。
ネットワークモニタのフィルタとしては以下のフィルタを設定しておきます。
Source == "<グローバル IP>" |
インターネット経由で接続をする際に使用されているグローバル IP を送信元として、送信先の TCP 20000 以外のパケットを表示するようにフィルタを使用しています。
TCP 2000 ですが、RemoteForwarderService で使用されておりこのサービスはリモートデスクトップで接続をする際に使用されています。
グローバル IP から RemoteForwarderService を経由して接続がされているパケットも表示をするとかなり多くの情報が表示されてしまいますので、フィルタで除外をしています。
それでは、SSMS から SQL Server に接続をしてみます。
ネットワークモニタを見てもパケットは流れてきていませんでした。
■パブリックポートを 1433 以外に設定
パブリックポートを 1433 以外に設定して接続の確認を行ってみたいと思います。
# エンドポイントを変更したパッケージでアップグレードをしたのですが、エラーになってしまったので、再デプロイしています…。
プライベートポートに関しては 1433 のままとしていますので、VM Role 上の SQL Server は設定を変更せずにそのままの状態となっています。
パブリックポートを 10000 にした場合は正常に接続することができました。
ネットワークモニタにもパケットが流れてきています。
# プライベートポートは 1433 なので、VM Role からみると 1433 に対して接続が行われていることになります。
パブリックポートを 1433 にするとうまく接続ができませんでした…。
エンドポイントを使用して VM Role 上の SQL Server を使用する場合、1433 で公開するということはないと思いますが、なぜ接続ができないのかがいまいちわかりませんでした。
SQL Azure が 1433 を使用しているからとかあるのでしょうか??