Windows Server 2012にAzure VMがあり、その上にSQL Server 2012 Expressデータベースエンジンコンポーネントをインストールしました。次に、 here の指示に従って、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)
リモートで接続する前に他に何を設定する必要がありますか?
トラブルシューティングの指示 here に従っています。以下の各ブロック引用は、そのリンクを説明するステップです。
SQL Serverデータベースエンジンのインスタンスがインストールされ、実行されていることを確認します。
できたSQL Server Expressをインストールし、SQLEXPRESSという名前のインスタンスとして実行しています。
名前付きインスタンスに接続しようとしている場合は、SQL Server Browserサービスが実行されていることを確認してください。
できたSQL Server Browserサービスを有効にするために、手順 here を実行しました。
コンピューターの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 を使用して接続をテストしました(Azureではcmd pingはすぐに動作しません。)ポート80に接続することができました。
ローカル接続のテスト
できたコマンドプロンプトから sqlcmd.exe を使用し、TCPを介してユーザー名とパスワードを使用してローカルに接続できました。
ファイアウォールでポートを開く
SQLEXPRESSがリッスンするポートを開きました。サーバーログ(上記)は、SQLEXPRESSがポート49169でリッスンしていることを示しましたが、これは多くの動的ポートの1つにすぎず、静的ポート1435をセットアップする必要がありました。
トラブルシューティング手順には次のようにも書かれています
名前付きインスタンスまたはTCPポート1433以外のポートに接続している場合は、UDPポート1434、SQL Server Browserサービス用。
SQLEXPRESS(名前付きインスタンス)を接続しているため、UDP用にポート1434を開く必要がありました。
名前付きインスタンスへの接続に関するさらなる調査により、動的ポートの問題が明らかになりました。ポート49169(多くの効果的なオプションの1つ)の代わりにポート1435(静的)を使用している理由
SQL Server Express、SQL Server Compact、およびデータベースエンジンの名前付きインスタンスのインスタンスは、動的ポートを使用します。特定のポートを使用するようにこれらのインスタンスを構成するには、 特定のTCPポートでリッスンするようにサーバーを構成する(SQL Server構成マネージャー) および here を参照してください。 。
できた[SQL構成マネージャー]> [SQL Serverネットワーク構成]> [SQLEXPRESSのプロトコル]> [TCP/IP]に移動し、次の操作を行いました。
[プロトコル]タブ> [すべてを聞く]> [いいえ]。
[IPアドレス]タブ>リストされた各アドレス
SQLEXPRESSサービスを再起動した後、SQL Server Management Studioのログを再度調べたところ、サーバーがポート1435でリッスンしていることがわかりました!!!やった!
接続のテスト
できたローカル(Azure以外)のコンピューターでSQL Server Management Studioを開き、接続しました。
成功。
答えが見つかった3つのWebページを次に示します。最も難しい部分は、SQLEXPRESSの静的ポートを設定することでした。
Windows AzureでのSQL Server仮想マシンのプロビジョニング 。これらの最初の指示は回答の25%を提供しました。
SQL Serverデータベースエンジンへの接続のトラブルシューティング方法 。これを注意深く読むと、答えのさらに50%が得られました。
異なるIPアドレスの異なるポートでリッスンするようにSQLサーバーを構成する方法? 。これにより、名前付きインスタンス(SQLEXPRESSなど)の静的ポートのセットアップが可能になりました。答えまでの道のりの最後の25%が必要でした。
Names Pipes Providerからエラーを受け取っているという事実は、接続を確立しようとしているときにTCP/IPプロトコルを使用していないことを示しています。 「tcp」プレフィックスを追加して、ポート番号を指定してみてください。
tcp:name.cloudapp.net,1433
私も似たようなものに苦労しました。私の推測では、実際の問題は別のマシンで実行されているSQL Expressインスタンスへの接続です。これを行う手順は、次のように要約できます。
この時点で、SQL認証、ユーザー「sqlUser」、パスワード「sql」を使用して、上記のように構成されたSQL Expressインスタンスにリモートで接続できるはずです。これを確認する最後のヒントと簡単な方法は、デスクトップに「Test.UDL」と言う拡張子.UDLの空のテキストファイルを作成することです。このファイルをダブルクリックして編集すると、Microsoft Data Link Propertiesダイアログが呼び出され、リモートSQL接続をすばやくテストできます