目标:我正在尝试将我们的本地SSMS数据库备份到Azure云存储。
我有一个blob容器https://zutosqlbackupslive.blob.core.windows.net/dw1/这是私人的。
我创建了一个具有完全权限的共享访问签名(允许所有资源类型,允许所有权限),开始日期为昨天,到期日期为明年。
它使用密钥1设置为allo HTTPS和HTTP。
使用此SAS,我可以通过将其添加到图像文件的URL末尾来访问blob中的测试图像。所以我的SAS工作。
SQL脚本
CREATE CREDENTIAL [AzureDWBackup]
WITH IDENTITY = 'Shared Access Signature',
SECRET = '<<SAS key>>' -- this the key taken from the highlighted section of the screenshot
GO
BACKUP DATABASE Maintenance
TO URL = 'https://zutosqlbackupslive.blob.core.windows.net/dw1/Maintenance_DW1_FullBackup_20062017T1518.bak'
WITH INIT, NOFORMAT, NAME = N'Maintenance_DW1_FullBackup_20062017T1518', STATS = 10
, CREDENTIAL = N'AzureDWBackup'
产生的错误是:
Msg 3298,Level 16,State 2,Line 11 备份/还原到URL设备错误:解码存储密钥时出错。
Msg 3013,Level 16,State 1,Line 11 BACKUP DATABASE异常终止。
任何人都可以从中看出什么是错的,或建议下一步尝试什么。
根据您的描述,我按照here创建了带有SAS URL的SQL Credential。这是我的测试,你可以参考它:
为SAS URL和备份db创建SQL凭据
--Create a SQL Credential for the SAS URL
CREATE CREDENTIAL [https://{storage-account-name}.blob.core.windows.net/dbbackups] WITH IDENTITY = 'Shared Access Signature'
,SECRET = 'st=2017-04-22T03%3A55%3A00Z&se=2017-07-29T03%3A55%3A00Z&sp=rwdl&sv=2015-12-11&sr=c&sig=Txv%2FWrStGYb6ax1dzb47WbBjO7iNCbwohl02jodhuNw%3D'
--backup the database
BACKUP DATABASE [{your-database-name}]
TO URL = 'https://{storage-account-name}.blob.core.windows.net/dbbackups/brucedb_20160623114800.bak'
注意:您需要从SAS令牌中删除第一个?
。
结果:
此外,要使用storage account name
和account access key
创建SQL Server凭据,您可以参考Lesson 2: Create a SQL Server Credential和Lesson 3: Write a Full Database Backup to the Windows Azure Blob Storage Service。
这 - 在创建对共享访问签名类型连接的访问时,"CREATE CREDENTIAL [AzureDWBackup]"
需要是访问URL。
您使用了cust0m名称而不是
CREATE CREDENTIAL [https://zutosqlbackupslive.blob.core.windows.net/dw1]
示例模板:
CREATE CREDENTIAL [https://<storage_account_name>.blob.core.windows.net/<container>]
WITH IDENTITY = 'SHARED ACCESS SIGNATURE'
, SECRET = '<shared_access_signature_key_with_removed_first_?_symbol>'