备份到Azure存储BLOB时出现SQLVDI错误

时间:2017-08-08 12:01:21

标签: sql sql-server azure azure-storage database-backups

我正在运行修补后的SQL 2014尝试将数据库备份到我们的Azure存储BLOB中,使用:

BACKUP DATABASE [DB]
TO URL = N'https://storage.blob.core.windows.net/server-mssqlserver/DB.bak'
WITH CREDENTIAL = N'AzureCredential'
    ,NOFORMAT
    ,NOINIT
    ,NAME = N'DBA_DB-Full Database Backup'
    ,NOSKIP
    ,NOREWIND
    ,NOUNLOAD
    ,COMPRESSION
    ,STATS = 5
GO

但查询会引发以下错误:

  

Msg 3292,Level 16,State 9,Line 1
  尝试使用指定的URL设备执行备份或还原时发生故障。有关详细信息,请参阅Windows事件日志   消息3013,级别16,状态1,行1   BACKUP DATABASE异常终止。

检查服务器的事件日志会将实际错误显示为:

  

SQLVDI:Loc = IdentifySQLServer。 DESC = MSSQLSERVER。 ErrorCode =(5)访问被拒绝   。过程= 4668。线程= 6596。客户。实例= MSSQLSERVER。 VD =

我已确保 SQL Server代理服务的帐户具有创建全局对象策略,并确保 SQL VSS Writer 服务正在本地系统帐户下运行。错误不断发生!

我可以做些什么来修复它,或者只记录一些比#34; SQLVDI:Loc = IdentifySQLServer"更详细的错误消息。一个上面?

1 个答案:

答案 0 :(得分:0)

Crikey,这是其中之一"不知道我是如何修理它的#34;的东西。

在我去吃午餐之前,我可以通过运行提供的T-SQL可靠地生成有问题的错误,但当我从午餐回来时,BACKUP命令就完成了!

我记得更改的主要内容是Azure端的 ,我在其中创建了 SAS(共享访问签名)

对于SQL 2014,这应该是不是必需的,因为它使用实际的Azure Credential来连接到存储。我实际上为SQL Server 2016的一个实例创建了SAS,我希望备份到同一个容器,可能也打开了SQL Server 2014容器的访问途径!

非常感谢Sean Gallardy推荐ProcMon,其中显示的错误日志信息比" ErrorCode =(5)访问被拒绝"消息确实。