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

如何通过Azure Automation Runbook读取Blob中.sql文件并执行至Azure SQL数据库

解决方案:直接读取Blob内容执行SQL脚本

不用把SQL文件下载到本地存储,PowerShell Runbook可以直接读取Blob里的SQL脚本内容,再传给Invoke-Sqlcmd执行,具体操作步骤如下:

1. 连接存储账户并读取Blob内容

用Az.Storage模块直接获取Blob的文本内容,无需落地文件。示例代码:

# 配置存储账户信息
$storageAccountName = "你的存储账户名"
$containerName = "你的容器名"
$blobName = "目标SQL文件名,比如test.sql"

# 获取存储上下文(如果用托管身份,不用密钥,直接调用Get-AzStorageAccount即可)
$storageAccount = Get-AzStorageAccount -ResourceGroupName "你的资源组名" -Name $storageAccountName
$ctx = $storageAccount.Context

# 把Blob里的SQL脚本读到变量里
$blob = Get-AzStorageBlob -Container $containerName -Blob $blobName -Context $ctx
$sqlScript = $blob.ICloudBlob.DownloadText()

2. 直接执行脚本内容

Invoke-Sqlcmd的-Query参数可以直接接收字符串形式的SQL脚本,不需要用依赖本地文件的-InputFile参数。示例代码:

# 配置SQL数据库连接信息
$sqlServer = "你的SQL服务器名.database.windows.net"
$sqlDbName = "目标数据库名"
$sqlUser = "数据库用户名"
$sqlPwd = ConvertTo-SecureString "数据库密码" -AsPlainText -Force
$sqlCred = New-Object System.Management.Automation.PSCredential ($sqlUser, $sqlPwd)

# 执行SQL脚本
Invoke-Sqlcmd -ServerInstance $sqlServer -Database $sqlDbName -Credential $sqlCred -Query $sqlScript

补充说明

  • 如果Runbook用系统托管身份,可以给存储账户和SQL数据库配置对应权限,不用硬编码密钥或密码,安全性更高。
  • 要是SQL脚本特别大,DownloadText可能有内存压力,可以考虑分段读取,但绝大多数场景下直接读变量就够用。
  • 别用-InputFile参数,这个确实需要本地文件路径,无服务器Runbook没有持久化存储,直接传字符串是最省事的方案。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 04:30:57