最初の試み
Windows Server 2012 を搭載した Azure VM があり、そこに SQL Server 2012 Express データベース エンジン コンポーネントをインストールしました。次に、こちらの手順に従って、SQL Server Management Studio にリモートで接続しました。
- 仮想マシンの TCP エンドポイントを作成する
- Windows ファイアウォールで TCP ポートを開く
- TCP プロトコルをリッスンするように SQL Server を構成する
- 混合モード認証用に SQL Server を構成する
- SQL Server 認証ログインを作成する
- 仮想マシンの DNS 名を決定する
- 別のコンピューターからデータベース エンジンに接続する
ステップ 7 の後、次のエラーを受け取りました。
SQL Server への接続を確立中に、ネットワーク関連またはインスタンス固有のエラーが発生しました。サーバーが見つからないか、アクセスできませんでした。インスタンス名が正しいこと、および SQL Server がリモート接続を許可するように構成されていることを確認してください。(プロバイダー: 名前付きパイプ プロバイダー、エラー: 40 - SQL Server への接続を開けませんでした) (Microsoft SQL Server、エラー: 53)
リモート接続する前に他に何を設定する必要がありますか?
トラブルシューティング
こちらのトラブルシューティング手順に従っています。以下の各ブロック引用は、そのリンクを説明するステップです。
SQL Server データベース エンジンのインスタンスがインストールされ、実行されていることを確認します。
終わり。SQL Server Express をインストールし、SQLEXPRESS という名前付きインスタンスとして実行しています。
名前付きインスタンスに接続しようとしている場合は、SQL Server Browser サービスが実行されていることを確認してください。
終わり。こちらの手順に従って、SQL Server Browser サービスを有効にしました。
コンピューターの IP アドレスを取得します。
終わり。これらは後で接続をテストするために使用し、おそらく SQLEXPRESS の静的ポートを設定するために使用します。
10.241.62.155
fe80::45c:8c29:e19f:f78b%15
SQL Server が使用する TCP ポート番号を取得します。
終わり。SQL Server Management Studioサーバー ログは、サーバーがポート 49169 でリッスンしていることを示していました。
プロトコルを有効にする
終わり。構成マネージャーで既に TCP/IP を有効にしましたが、念のため SQL Server サービスを再起動しました。
TCP/IP 接続のテスト
終わり。tcping.exeを使用して接続をテストしました (cmd ping は Azure ではすぐに機能しません)。ポート 80 に接続できました。
- tcping.exe buddha.cloudapp.net > 成功
- tcping.exe buddha.cloudapp.net 80 > 成功
ローカル接続のテスト
終わり。コマンド プロンプトからsqlcmd.exeを使用し、ユーザー名とパスワードを使用して TCP 経由でローカルに接続できました。
- sqlcmd -S Buddha\SQLEXPRESS (共有メモリ プロトコルによる成功)
- sqlcmd -S tcp:Buddha\SQLEXPRESS (TCP 経由で成功)
- sqlcmd -S tcp:Buddha\SQLEXPRESS -U sa -P (ユーザー名で TCP 経由で成功)
- sqlcmd -S tcp:10.241.62.155\SQLEXPRESS -U sa -P (内部 IP で成功)
ファイアウォールでポートを開く
SQLEXPRESS がリッスンするポートを開きました。サーバー ログ (上記) は、SQLEXPRESS がポート 49169 でリッスンしていることを示していましたが、これは多くの動的ポートの 1 つにすぎず、静的ポート 1435 をセットアップする必要がありました。
- WF.msc を使用して、ポート 1435 の受信 TCP 規則を作成します。
- Azure 管理ポータルを使用して、ポート 1435 の TCP エンドポイントを作成します。
トラブルシューティングの手順には、次のようにも記載されています。
名前付きインスタンスまたは TCP ポート 1433 以外のポートに接続している場合は、SQL Server Browser サービス用にUDP ポート 1434も開く必要があります。
SQLEXPRESS (名前付きインスタンス) を接続しているため、UDP 用にポート 1434 を開く必要がありました。
- WF.msc を使用して、ポート 1434の受信UCP規則を作成します。
- Azure 管理ポータルを使用してポート 1434のUDPエンドポイントを作成する
名前付きインスタンスへの接続に関するさらなる調査により、動的ポートの問題が明らかになりました。ポート 49169 (多くの効果的なオプションの 1 つ) の代わりにポート 1435 (静的) を使用している理由。
SQL Server Express、SQL Server Compact、およびデータベース エンジンの名前付きインスタンスのインスタンスは、動的ポートを使用します。特定のポートを使用するようにこれらのインスタンスを構成するには、「特定の TCP ポートでリッスンするようにサーバーを構成する (SQL Server 構成マネージャー)」を参照してください。そして ここに。
終わり。[SQL 構成マネージャー] > [SQL Server ネットワーク構成] > [SQLEXPRESS のプロトコル] > [TCP/IP] に移動し、次のことを行いました。
[プロトコル] タブ > [すべてリッスン] > [いいえ]。
[IP アドレス] タブ > リストされた各アドレス
- 有効 > はい
- TCP 動的ポート > 空白 (ゼロを削除)
- TCP ポート > 1435 (または選択)
SQLEXPRESS サービスを再起動した後、再度 SQL Server Management Studio のログを調べたところ、サーバーがポート 1435 でリッスンしていることがわかりました!!! 万歳!
接続のテスト
終わり。ローカル (Azure 以外の) コンピューターで SQL Server Management Studio を開き、接続しました。
- buddha.cloudapp.net,1435 または buddha.cloudapp.net\SQLEXPRESS
- さ
- パスワード
成功。