55

最初の試み

Windows Server 2012 を搭載した Azure VM があり、そこに SQL Server 2012 Express データベース エンジン コンポーネントをインストールしました。次に、こちらの手順に従って、SQL Server Management Studio にリモートで接続しました。

  1. 仮想マシンの TCP エンドポイントを作成する
  2. Windows ファイアウォールで TCP ポートを開く
  3. TCP プロトコルをリッスンするように SQL Server を構成する
  4. 混合モード認証用に SQL Server を構成する
  5. SQL Server 認証ログインを作成する
  6. 仮想マシンの DNS 名を決定する
  7. 別のコンピューターからデータベース エンジンに接続する

ステップ 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
  • パスワード

成功。

4

3 に答える 3

18

答えが見つかった 3 つの Web ページを次に示します。最も困難な部分は、SQLEXPRESS の静的ポートの設定でした。

Windows Azure での SQL Server 仮想マシンのプロビジョニング。これらの最初の指示で、回答の 25% が得られました。

SQL Server データベース エンジンへの接続のトラブルシューティング方法. これを注意深く読むと、さらに 50% の答えが得られました。

異なる IP アドレスの異なるポートでリッスンするように SQL サーバーを構成する方法は? . これにより、名前付きインスタンス (SQLEXPRESS など) の静的ポートを設定できるようになりました。回答までの最後の 25% を要しました。

于 2013-04-11T23:25:18.960 に答える
16

Names Pipes Provider からエラーが発生しているという事実は、接続を確立しようとしているときに TCP/IP プロトコルを使用していないことを示しています。「tcp」プレフィックスを追加して、ポート番号を指定してみてください。

tcp:name.cloudapp.net,1433
于 2013-04-11T19:22:36.477 に答える