我有一个在本地SQL Server实例上运行的数据库。我已经设置了一个SQL代理来每晚备份数据库并将其存储在Azure的容器中。但是,作业运行后,我看到以下错误:
Message
Executed as user: NT SERVICE\SQLSERVERAGENT. Cannot open backup device 'https://mystorageaccount.blob.core.windows.net/mystoragecontainer/20200102/MYDATABASE_0.bak'. Operating system error 50(The request is not supported.). [SQLSTATE 42000] (Error 3201) BACKUP DATABASE is terminating abnormally. [SQLSTATE 42000] (Error 3013)
Azure存储帐户是“存储”(通用v1)。
SQL Server 13.0.5233.0 Microsoft SQL Server管理Studio 14.0.17213.0 Microsoft Analysis Services客户端工具14.0.1016.232 Microsoft数据访问组件(MDAC)10.0.14393.0 Microsoft MSXML 3.0 6.0 Microsoft Internet Explorer 9.11.14393.0 Microsoft .NET Framework 4.0.30319.42000 操作系统6.3.14393
是否可以配置NT SERVICE \ SQLSERVERAGENT连接到Azure存储容器?
答案 0 :(得分:0)
这似乎是与访问相关的问题。要备份到Azure Blob存储,您的备份命令必须具有可访问blob存储的有效凭据。这可以通过两种方式完成:
查看您的凭据,确保您的访问密钥正确,并且,如果您使用的是SAS,请确保已定义访问策略,并指向它可以访问的正确容器。有关URL备份和脚本示例的更多信息,请参阅:
共享访问签名
身份和访问密钥
其他参考:
https://blog.pythian.com/how-to-fix-sql-backup-to-url-failure-operating-system-error-50/
希望有帮助。
答案 1 :(得分:0)
所有评论在一定程度上有效。最后,我修复了使用SAS(共享访问签名)凭据将SQL Server数据库备份到Azure存储容器的问题(松散地用语)。
IF NOT EXISTS
(SELECT * FROM sys.credentials
WHERE name = 'https://mystorageaccount.blob.core.windows.net/mycontainer')
CREATE CREDENTIAL [https://mystorageaccount.blob.core.windows.net/mycontainer]
WITH IDENTITY = 'SHARED ACCESS SIGNATURE',
SECRET = 'sv=_my_sas_key_without_?';
BACKUP DATABASE [mydatabase]
TO URL = 'https://mystorageaccount.blob.core.windows.net/mycontainer/mydatabase_03012020120400.bak'
WITH FORMAT,
COMPRESSION,
STATS=5,
BLOCKSIZE=65536,
MAXTRANSFERSIZE=4194304;
GO