この記事では、標準の SQL Server クライアント ツールを使用して、Azure Arc で有効になっている SQL Managed Instance に接続する方法について説明します。
Azure Arc で有効な SQL Managed Instance を表示する
インスタンスと外部エンドポイントを表示するには、次のコマンドを使用してください。
az sql mi-arc list --k8s-namespace <namespace> --use-k8s -o table
出力は次のようになります。
Name PrimaryEndpoint Replicas State
--------- ------------------- ---------- -------
sqldemo 10.240.0.107,1433 1/1 Ready
AKS や kubeadm、OpenShift などを使用している場合は、ここから外部 IP とポート番号をコピーし、SQL Server Management Studio (SSMS) や sqlcmd などの SQL Server/Azure SQL インスタンスに接続するための任意のツールを使用して接続できます。 ただし、クイック スタート VM を使用している場合は、Azure の外部からその VM に接続する方法に関する特別な情報について、以下を参照してください。
注
特にパブリック クラウドに作成されている場合は、企業ポリシーによって IP やポートへのアクセスがブロックされる場合があります。
接続
SQL Server Management Studio または sqlcmd を使用して接続する
SQL Server Management Studio (SSMS) または sqlcmd を使用して、上記の外部エンドポイント IP アドレスとポート番号を使用してインスタンスに接続します。 Azure VM を使用している場合は、パブリック IP アドレスが必要になります。これを識別する方法については、「Azure 仮想マシンのデプロイに関する特別な注意事項」を参照してください。
次に例を示します。
- サーバー: 52.229.9.30,30913
- ユーザー名: sa
- パスワード: プロビジョニング時に指定した SQL パスワード
注
Kubernetes マニフェストを使用して作成されたマネージド インスタンスに接続するには、base64 でエンコードされた形式で sqlcmd にユーザー名とパスワードを指定する必要があります。
Linux または Windows で sqlcmd を使用して接続するには、次のようなコマンドを使用できます。 SQL パスワードの入力を求められたら、入力します。
sqlcmd -S 52.229.9.30,30913 -U sa
Azure 仮想マシンのデプロイに関する特別な注意事項
Azure 仮想マシンを使用している場合は、エンドポイントの IP アドレスにパブリック IP アドレスが表示されません。 外部の IP アドレスを検索するには、次のコマンドを使用します。
az network public-ip list -g azurearcvm-rg --query "[].{PublicIP:ipAddress}" -o table
その後、パブリック IP アドレスとポートを組み合わせて接続できます。
また、ネットワーク セキュリティ ゲートウェイ (NSG) を使用して SQL インスタンスのポートを公開する必要がある場合もあります。 NSG 経由のトラフィックを許可するには、次のコマンドを使用して実行できる規則を追加する必要があります。
規則を設定するには、次のコマンドを使用して確認できる NSG の名前を把握しておく必要があります。
az network nsg list -g azurearcvm-rg --query "[].{NSGName:name}" -o table
NSG の名前を取得したら、次のコマンドを使用してファイアウォール規則を追加できます。 この例の値は、ポート 30913 に対する NSG 規則を作成し、任意のソース IP アドレスからの接続を許可します。 これは、セキュリティ上、ベスト プラクティスとはいえません。 クライアントの IP アドレスや、チームまたは組織の IP アドレスが含まれる IP アドレス範囲に固有の -source-address-prefixes 値を指定すると、適切にロックダウンできます。
次の --destination-port-ranges パラメーターの値を、上記の az sql mi-arc list コマンドから受け取ったポート番号に置き換えます。
az network nsg rule create -n db_port --destination-port-ranges 30913 --source-address-prefixes '*' --nsg-name azurearcvmNSG --priority 500 -g azurearcvm-rg --access Allow --description 'Allow port through for db access' --destination-address-prefixes '*' --direction Inbound --protocol Tcp --source-port-ranges '*'