You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过PowerShell使用服务主体认证连接Azure Synapse专用SQL池并部署SQL脚本

用PowerShell+服务主体/托管标识连接Azure Synapse专用SQL池并部署SQL脚本

一、使用Azure AD服务主体认证并部署

1. 前置准备

  • 确认服务主体已拥有Azure Synapse专用SQL池的db_owner或足够执行部署脚本的权限
  • 安装所需PowerShell模块:
    Install-Module -Name Az -Force -AllowClobber
    Install-Module -Name SqlServer -Force -AllowClobber
    

2. 获取服务主体访问令牌

# 填入服务主体信息
$tenantId = "你的Azure租户ID"
$clientId = "服务主体应用ID"
$clientSecret = "服务主体密钥"

# 登录服务主体
Connect-AzAccount -ServicePrincipal -Tenant $tenantId -ApplicationId $clientId -Credential (ConvertTo-SecureString $clientSecret -AsPlainText -Force)

# 获取针对Synapse SQL的访问令牌
$token = (Get-AzAccessToken -ResourceUrl "https://database.windows.net/").Token

3. 执行SQL脚本部署

# 填入Synapse SQL池信息和脚本路径
$serverName = "你的synapse服务器名.database.windows.net"
$databaseName = "专用SQL池名称"
$sqlScriptPath = "C:\scripts\your-deploy-script.sql"

# 执行脚本
Invoke-Sqlcmd -ServerInstance $serverName -Database $databaseName -AccessToken $token -InputFile $sqlScriptPath -QueryTimeout 3600

二、使用托管标识认证并部署

1. 系统托管标识(适用于Azure VM/Function等已启用系统标识的环境)

步骤1:配置权限

在Azure Synapse专用SQL池中,将系统托管标识添加为db_owner或对应权限的数据库用户。

步骤2:获取令牌并执行脚本

# 获取系统托管标识的访问令牌
$token = (Get-AzAccessToken -ResourceUrl "https://database.windows.net/").Token

# 执行脚本
$serverName = "你的synapse服务器名.database.windows.net"
$databaseName = "专用SQL池名称"
$sqlScriptPath = "C:\scripts\your-deploy-script.sql"

Invoke-Sqlcmd -ServerInstance $serverName -Database $databaseName -AccessToken $token -InputFile $sqlScriptPath -QueryTimeout 3600

2. 用户托管标识

步骤1:配置权限

确保用户托管标识已创建,并被授予Synapse SQL池的对应权限。

步骤2:登录并执行脚本

# 填入用户托管标识的资源ID
$managedIdentityId = "/subscriptions/你的订阅ID/resourceGroups/资源组名/providers/Microsoft.ManagedIdentity/userAssignedIdentities/标识名称"

# 登录用户托管标识
Connect-AzAccount -Identity -AccountId $managedIdentityId

# 获取令牌并执行脚本
$token = (Get-AzAccessToken -ResourceUrl "https://database.windows.net/").Token

$serverName = "你的synapse服务器名.database.windows.net"
$databaseName = "专用SQL池名称"
$sqlScriptPath = "C:\scripts\your-deploy-script.sql"

Invoke-Sqlcmd -ServerInstance $serverName -Database $databaseName -AccessToken $token -InputFile $sqlScriptPath -QueryTimeout 3600

注意事项

  • 要求SqlServer模块版本≥21.1.18256,该版本开始支持-AccessToken参数
  • 可根据脚本复杂度调整-QueryTimeout的超时值(单位:秒)
  • 遵循最小权限原则,避免给服务主体/托管标识分配超出需求的权限

内容的提问来源于stack exchange,提问作者azuresnowflake1

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.23 07:07:15