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

使用New-AzSqlDatabaseExport时SAS令牌无法生效的问题求助

问题解答

New-AzSqlDatabaseExport完全支持SAS令牌作为输入,你的脚本失效是因为两个关键配置错误:

错误1:StorageUri参数指向错误

你当前传入的StorageUri是存储账户的根地址,而该参数需要指定导出的bacpac文件的完整Blob路径,也就是你代码里已经拼接好的$storageURI变量。

错误2:SAS令牌格式不正确

传入StorageKey的SAS令牌不能包含开头的?符号,必须去掉这个前缀。


修正后的完整脚本

Param (
    [string][Parameter(Mandatory=$true)] $AdminPassword
)

Process {
    $AdminSecurePassword = ConvertTo-SecureString –String $AdminPassword –AsPlainText -Force
    $sasToken = 'sv=2022-11-02&ss=bfqt&srt=sco&sp=rwdlacupiytfx&se=2023-11-23T18:11:49Z&st=2023-11-23T10:11:49Z&sip=49.200.220.5&spr=https&sig=i68D3IxhabcdxyzfHoMIHuQ2DBvgRzc42UXFisKdf2PJoSQ%3D'
    $Context = New-AzStorageContext -StorageAccountName "storageaccount" -Environment 'AzureCloud' -SasToken $sasToken
    $container=Get-AzStorageContainer -Name 'sqlblobtest' -Context $Context
    $storageURI=$container.CloudBlobContainer.Uri.OriginalString+"/sqlagent.bacpac"
    $exportRequest = New-AzSqlDatabaseExport `
        -ResourceGroupName 'TEST-AZURE-RG' `
        -ServerName 'test-azure-sql' `
        -DatabaseName 'Customers' `
        -StorageKeytype 'SharedAccessKey' `
        -StorageKey $sasToken `
        -StorageUri $storageURI `
        -AdministratorLogin 'testadmin' `
        -AdministratorLoginPassword $AdminSecurePassword
    Get-AzSqlDatabaseImportExportStatus -OperationStatusLink $exportRequest.OperationStatusLink
} 

补充说明

  • SAS令牌作为SharedAccessKey使用时,必须确保令牌拥有容器的写入权限(你的令牌里sp=rwdlacupiytfx已经包含了写入权限,这部分没问题)
  • 确认SAS令牌的有效期、IP限制等规则和当前执行环境匹配,避免因权限范围外导致的访问失败

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 21:46:16