如何搭配SAS令牌使用Backup-SqlDatabase完成SQL数据库备份?
问题解决方案
Backup-SqlDatabase 本身支持使用SAS令牌备份到Azure存储,你遇到的两个报错都是配置方式错误导致的,对应解决方法如下:
报错原因说明
- 第一个传入
SqlCredential参数的报错:该参数仅适配使用存储账户访问密钥创建的SQL凭证,包含SAS签名的凭证不支持通过WITH CREDENTIAL语法调用,因此直接传SqlCredential会触发校验错误。 - 第二个不传入
SqlCredential参数的报错:SQL实例没有提前配置对应Azure存储容器的SAS凭证,无法识别Blob存储URL作为合法的备份目标路径。
具体操作步骤
- 先在你要备份的SQL实例中创建对应Azure Blob容器的SAS凭证,凭证名称必须和容器的完整URL完全一致,示例T-SQL代码如下:
CREATE CREDENTIAL [https://<你的存储账户名>.blob.core.windows.net/<你的容器名>] WITH IDENTITY = 'SHARED ACCESS SIGNATURE', SECRET = '<你的SAS令牌,注意去掉开头的?符号>';
- 调用
Backup-SqlDatabase时不需要传入SqlCredential参数,直接指定备份文件的完整Blob路径即可,示例命令如下:
Backup-SqlDatabase -ServerInstance "你的SQL实例名" -Database "Test123" -BackupFile "https://xxxxdev.blob.core.windows.net/<你的容器名>/Test123_backup.bak"
注意事项
- 所用的SAS令牌需要具备对应容器的读取、写入、列出权限,过期时间需要覆盖备份操作的完整周期
- 仅SQL Server 2016及以上版本支持直接备份到Azure Blob存储使用SAS认证,更低版本无法使用该方案
- 如果需要批量备份,可以提前批量创建对应多个容器的SAS凭证,后续调用命令时无需重复配置
内容的提问来源于stack exchange,提问作者Cataster
相关产品推荐
相关产品推荐

