【问题标题】:SQL Server Managed Backup to Azure到 Azure 的 SQL Server 托管备份
【发布时间】:2021-08-06 20:06:18
【问题描述】:

我正在尝试将 SQL Server(本地)备份到 Azure Blob 存储。我已经创建了 SAS 凭证

CREATE CREDENTIAL [https://xxxxxxxxx.blob.core.windows.net/yyyyyyyy]   
WITH IDENTITY = 'Shared Access Signature',  
SECRET = 'zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz'

在 SQL Server 中,尝试使用此命令启用服务器备份时

USE msdb;  
GO  

EXEC msdb.managed_backup.sp_backup_config_basic   
     @enable_backup =1,   
     @database_name = 'TempDB',  
     @container_url = 'https://xxxxxxxxx.blob.core.windows.net/yyyyyyyy',   
     @retention_days = 30
GO

我收到此错误:

消息 45207,级别 17,状态 17,过程 managed_backup.sp_add_task_command,第 102 行 [批处理开始第 19 行]
由于内部错误,操作失败。参数不能为空字符串。
参数名称:sasToken 请稍后重试。

在 Microsoft.WindowsAzure.Storage.Core.Util.CommonUtility.AssertNotNullOrEmpty(字符串参数名称,字符串值)
在 Microsoft.WindowsAzure.Storage.Auth.StorageCredentials..ctor(String sasToken)
在 Microsoft.SqlServer.SmartAdmin.SmartBackupAgent.FileService.VerifyContainerURL(字符串 containerURL,SqlConnection conn)
在 Microsoft.SqlServer.SmartAdmin.SmartBackupAgent.SmartBackup.ConfigureDbOrInstance(SmartBackupConfigParameters 配置,LogBaseService jobLogger,SqlConnection conn)

如果我们将@enable_backup 更改为“0”,则查询将正确执行。

我已尝试重新创建 SAS 密钥,但它不起作用。

PS:我目前使用的是 SQL Server 2017。

【问题讨论】:

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


    【解决方案1】:

    试试这些步骤

    1) 使用共享访问签名创建 SQL Server 凭据。 要创建 SQL Server 凭据,请执行以下步骤:

    • 连接到 SQL Server Management Studio。

    • 打开一个新的查询窗口并连接到 SQL Server 实例 本地环境中的数据库引擎。

    • 在新的查询窗口中,执行以下脚本。

      使用主创建凭据 “https://.blob.core.windows.net/” //此名称必须与容器路径匹配,以https开头且必须 末尾不包含正斜杠 WITH IDENTITY='SHARED ACCESS SIGNATURE' //这是一个强制字符串,不应更改
      , SECRET = 'sharedaccesssignature' //这是共享访问 签名密钥 GO

    例子:

     USE master  
        CREATE CREDENTIAL [https://msfttutorial.blob.core.windows.net/containername] 
        WITH IDENTITY='SHARED ACCESS SIGNATURE'   
        , SECRET = 'sharedaccesssignature' 
        GO
    
    • 要查看所有可用的凭据,您可以运行以下语句 在连接到您的实例的查询窗口中:

    SELECT * from sys.credentials

    2) 创建备份。为您的存储帐户名称和容器适当修改 URL,然后执行此脚本。

    //To permit log backups, before the full database backup, modify the database to use the full recovery model.  
    USE master;  
    ALTER DATABASE AdventureWorks2016  
       SET RECOVERY FULL;  
    BACKUP DATABASE AdventureWorks2016   
       TO URL = 'https://<mystorageaccountname>.blob.core.windows.net/<mystorageaccountcontainername>/AdventureWorks2016_onprem.bak
    

    3) 打开对象资源管理器并使用您的存储帐户和帐户密钥连接到 Azure 存储。展开容器验证备份是否出现在此容器中。

    有关更多详细信息,请参阅这些链接 link1 和 link2

    【讨论】:

      猜你喜欢
      • 2022-06-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-07-30
      • 2018-10-10
      • 2022-01-23
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多