你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

连接到由 Azure Arc 启用的 SQL 托管实例

本文介绍如何连接到由 Azure Arc 启用的 SQL 托管实例。

查看由 Azure Arc 启用的 SQL 托管实例

若要查看实例和外部终结点,请使用以下命令:

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 和端口号,并使用偏好的工具连接到此 IP 和端口,以连接到 Azure Data Studio 或 SQL Server Management Studio 等 SQL Server/Azure SQL 实例。 但是,如果你使用快速入门 VM,请参阅以下有关如何从 Azure 外部连接到该 VM 的特殊信息。

注意

你的企业策略可能会阻止访问该 IP 和端口,尤其是当此 VM 是在公有云中创建时。

连接

使用 Azure Data Studio、SQL Server Management Studio 或 SQLCMD 进行连接

打开 Azure Data Studio,并使用上述外部终结点 IP 地址和端口号连接到你的实例。 如果你使用 Azure VM,则需要使用公共 IP 地址,可以参考有关 Azure 虚拟机部署的特别说明来识别此地址

例如:

  • 服务器:52.229.9.30,30913
  • 用户名:sa
  • 密码:预配时指定的 SQL 密码

注意

可以使用 Azure Data Studio 查看 SQL 托管实例仪表板

注意

为了连接到使用 Kubernetes 清单创建的托管实例,需要以 base64 编码形式向 sqlcmd 提供用户名和密码。

若要使用 SQLCMD、Linux 或 Windows 进行连接,可以使用如下所示的命令。 根据提示输入 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 '*'