使用脚本将 SQL Server 实例大规模连接到 Azure
适用范围:SQL Server
重要
如果连接到 Azure Arc 的服务器安装了 SQL Server,则 Azure Arc 将自动安装适用于 SQL Server 的 Azure 扩展。 所有 SQL Server 实例资源都是在 Azure 中自动创建的,为所有 SQL Server 实例提供了集中式管理平台。
要自动连接 SQL Server 实例,请参阅自动将 SQL Server 连接到 Azure Arc。
如果服务器已连接到 Azure,但未自动部署适用于 SQL Server 的 Azure 扩展,请使用本文中的方法。
如果使用此方法部署扩展,则会在 Arc 计算机资源上创建 ArcSQLServerExtensionDeployment = Disabled
标记。
本文介绍如何使用脚本将安装在多个 Windows 或 Linux 计算机上的 SQL Server 实例作为单个任务连接到 Azure Arc。 将计算机连接到 Azure 后,Azure Arc 会自动安装适用于 SQL Server 的 Azure 扩展。 有关详细信息,请参阅自动将 SQL Server 连接到 Azure Arc。
为了获得最佳体验,请使用 Microsoft Entra ID。 使用 Microsoft Entra ID,定义服务主体。 服务主体是一种特殊的受限管理标识,它仅被授予了最低权限,可将计算机连接到 Azure,还可为已启用 Azure Arc 的服务器和已启用 Azure Arc 的 SQL Server 创建 Azure 资源。
在开始之前,请务必查看先决条件并确保已创建具有所需权限的自定义角色。
连接多个实例
必须在每台计算机上安装 Azure PowerShell。
创建服务主体。 使用
New-AzADServicePrincipal
cmdlet。 请确保将输出存储在变量中。 否则,稍后将无法检索所需的密码。$sp = New-AzADServicePrincipal -DisplayName "Arc-for-servers" -Role <your custom role> $sp
向服务主体授予访问 Microsoft Graph 的权限。
注意
- 创建服务主体时,你的帐户必须是要用于加入的订阅中的“所有者”或“用户访问管理员”。 如果你没有足够的权限创建角色分配,则可能会创建服务主体,但它将无法加入计算机。 先决条件中提供了有关如何创建自定义角色的说明。
检索存储在
$sp
变量中的密码:$credential = New-Object pscredential -ArgumentList "temp", $sp.PasswordCredentials.SecretText $credential.GetNetworkCredential().password
检索服务主体的租户 ID 值:
$tenantId= (Get-AzContext).Tenant.Id
使用适当的安全做法复制并保存密码、应用程序 ID 和租户 ID 值。 如果忘记或丢失了服务主体密码,可以使用
New-AzADSpCredential
cmdlet 重置它。注意
请注意,Azure Arc for servers 目前不支持使用证书进行登录,因此服务主体必须具有用于进行身份验证的机密。
按照将 SQL Server 连接到 Azure Arc 中的说明,从门户下载 PowerShell 脚本。
在 PowerShell ISE 的管理员实例中打开该脚本,并使用前述服务主体预配过程中生成的值替换以下环境变量。 这些变量最初为空。
$servicePrincipalAppId="{serviceprincipalAppID}" $servicePrincipalSecret="{serviceprincipalPassword}" $servicePrincipalTenantId="{serviceprincipalTenantId}"
在每台目标计算机上执行脚本。
验证成功加入
将 SQL Server 实例连接到 Azure 后,请转到 Azure 门户,查看新创建的 Azure Arc 资源。 在大约 1 分钟内,你会看到每台已连接的计算机都对应一个新的 Server - Azure Arc
资源,每个已连接的 SQL Server 实例都对应一个新的 SQL Server - Azure Arc
资源。 如果没有创建这些资源,则表示扩展的安装和激活过程中出现了问题。 有关故障排除选项,请参阅排查适用于 SQL Server 的 Azure 扩展的问题。