启用目标为 Azure 的 SQL Server 托管备份

适用范围:SQL Server

本主题介绍如何在数据库和实例级别使用默认设置启用目标为 Microsoft Azure 的 SQL Server 托管备份。 还介绍了如何启用电子邮件通知以及如何监视备份活动。

本教程使用 Azure PowerShell。 教程开始前, 请下载并安装 Azure PowerShell

重要

如果想启用高级选项或使用自定义计划,请在启用目标为 Microsoft Azure 的 SQL Server 托管备份之前先配置这些设置。 有关详细信息,请参阅为目标为 Microsoft Azure 的 SQL Server 托管备份配置高级选项

创建 Azure Blob 存储容器

此过程需要一个 Azure 帐户。 如果已有帐户,请转到下一步。 如果没有,可以使用 免费试用版 开始,或者浏览 购买选项

有关存储帐户的详细信息,请参阅 关于 Azure 存储帐户

  1. 登录 Azure 帐户。

    az login
    
  2. 创建 Azure 存储帐户。 如果已经有存储帐户,请转到下一步。 以下命令在美国东部地区创建一个名为 <backupStorage> 的存储帐户。

    az storage account create -n <backupStorage> -l "eastus" --resource-group <resourceGroup>
    
  3. 为备份文件创建名为 <backupContainer> 的 Blob 容器。

    $keys = az storage account keys list --account-name <backupStorage> --resource-group <resourceGroup> | ConvertFrom-Json
    az storage container create --name <backupContainer> --account-name <backupStorage> --account-key $keys[0].value 
    
  4. 生成共享访问签名 (SAS) 以访问容器。 以下命令为一年后过期的 <backupContainer> Blob 容器创建 SAS 令牌。

    az storage container generate-sas --name <backupContainer> --account-name <backupStorage> --account-key $keys[0].value
    

注意

也可使用 Azure 门户完成这些步骤。

输出将包含容器的 URL 和/或 SAS 令牌。 以下是一个示例:

https://managedbackupstorage.blob.core.windows.net/backupcontainer?sv=2014-02-14&sr=c&sig=xM2LXVo1Erqp7LxQ%9BxqK9QC6%5Qabcd%9LKjHGnnmQWEsDf%5Q%se=2015-05-14T14%3B93%4V20X&sp=rwdl

如果包含 URL,请将其与问号处的 SAS 令牌分开(不包括问号)。 例如,前面的输出会得出以下两个值。

类型 输出
容器 URL https://managedbackupstorage.blob.core.windows.net/backupcontainer
SAS 令牌 sv=2014-02-14&sr=c&sig=xM2LXVo1Erqp7LxQ%9BxqK9QC6%5Qabcd%9LKjHGnnmQWEsDf%5Q%se=2015-05-14T14%3B93%4V20X&sp=rwdl

将容器 URL 和 SAS 记录下来,以便在创建 SQL 凭据时使用。 有关 SAS 的详细信息,请参阅 共享访问签名,第一部分:了解 SAS 模型

启用目标为 Azure 的托管备份

  1. 创建 SAS URL 的 SQL 凭据: 使用 SAS 令牌来创建 Blob 容器 URL 的 SQL 凭据。 在 SQL Server Management Studio 中,使用下列 Transact-SQL 查询来创建 Blob 容器 URL 的凭据,示例如下:

    CREATE CREDENTIAL [https://managedbackupstorage.blob.core.windows.net/backupcontainer]   
    WITH IDENTITY = 'Shared Access Signature',  
    SECRET = 'sv=2014-02-14&sr=c&sig=xM2LXVo1Erqp7LxQ%9BxqK9QC6%5Qabcd%9LKjHGnnmQWEsDf%5Q%se=2015-05-14T14%3B93%4V20X&sp=rwdl'  
    
  2. 确保 SQL Server 代理服务启动且正在运行: 如果当前未运行 SQL Server 代理,则启动它。 进行到 Microsoft Azure 的 SQL Server 托管备份时,需要在实例上运行 SQL Server 代理才能执行备份操作。 可能要将 SQL Server 代理设置为自动运行,以确保可定期进行备份操作。

  3. 确定保持期: 确定备份文件的保持期。 以天为单位指定保持期,范围可为 1 到 30。

  4. 启用和配置目标为 Microsoft Azure 的 SQL Server 托管备份:启动 SQL Server Management Studio 并连接到目标 SQL Server 实例。 在根据要求修改数据库名称、容器 URL 和保持期的值后,从查询窗口中运行以下语句:

    重要

    若要在实例级别启用托管备份,请为 NULL 参数指定 database_name

    USE msdb;  
    GO  
    EXEC msdb.managed_backup.sp_backup_config_basic   
     @enable_backup = 1,   
     @database_name = 'yourdatabasename',  
     @container_url = 'https://managedbackupstorage.blob.core.windows.net/backupcontainer',   
     @retention_days = 30  
    GO  
    

    目标为 Microsoft Azure 的 SQL Server 托管备份现在已在指定的数据库上启用。 数据库上的备份操作最多可能需要 15 分钟才能运行。

  5. 检查扩展事件默认配置:通过运行以下 Transact-SQL 语句,检查扩展事件配置。

    SELECT * FROM msdb.managed_backup.fn_get_current_xevent_settings()  
    

    应看到默认情况下启用管理、操作和分析通道事件,且无法禁用这些事件。 这对于需要手动干预的事件来说应当已经足够。 可以启用调试事件,但是调试通道包含目标为 Microsoft Azure 的 SQL Server 托管备份用来检测问题和解决问题的信息性事件和调试事件。

  6. 启用和配置运行状况通知:目标为 Microsoft Azure 的 SQL Server 托管备份有一个存储过程,它创建代理作业以针对可能需要注意的错误或警告发出电子邮件通知。 以下步骤说明了启用和配置电子邮件通知的过程:

    1. 如果尚未在此实例上启用数据库邮件,请进行设置。 有关详细信息,请参阅 Configure Database Mail

    2. 将 SQL Server 代理通知配置为使用数据库邮件。 有关详细信息,请参阅 Configure SQL Server Agent Mail to Use Database Mail

    3. 启用电子邮件通知以接收备份错误和警告: 从查询窗口中,运行以下 Transact-SQL 语句:

      EXEC msdb.managed_backup.sp_set_parameter  
      @parameter_name = 'SSMBackup2WANotificationEmailIds',  
      @parameter_value = '<email1;email2>'  
      
  7. 在 Azure 存储帐户中查看备份文件:从 SQL Server Management Studio 或 Azure 门户中连接到存储帐户。 你将在指定容器中看到任何备份文件。 请注意,你会为数据库启用目标为 Microsoft Azure 的 SQL Server 托管备份后 5 分钟内看到数据库和日志备份。

  8. 监视运行状态: 你可以通过以前配置的电子邮件通知进行监视,也可以主动监控记录的事件。 以下是一些用于查看事件的示例 Transact-SQL 语句:

    --  view all admin events  
    USE msdb;  
    GO  
    DECLARE @startofweek datetime  
    DECLARE @endofweek datetime  
    SET @startofweek = DATEADD(Day, 1-DATEPART(WEEKDAY, CURRENT_TIMESTAMP), CURRENT_TIMESTAMP)   
    SET @endofweek = DATEADD(Day, 7-DATEPART(WEEKDAY, CURRENT_TIMESTAMP), CURRENT_TIMESTAMP)  
    
    DECLARE @eventresult TABLE  
    (event_type nvarchar(512),  
    event nvarchar (512),  
    timestamp datetime  
    )  
    
    INSERT INTO @eventresult  
    
    EXEC managed_backup.sp_get_backup_diagnostics @begin_time = @startofweek, @end_time = @endofweek  
    
    SELECT * from @eventresult  
    WHERE event_type LIKE '%admin%'  
    
    -- to enable debug events  
    USE msdb;  
    GO  
    EXEC managed_backup.sp_set_parameter 'FileRetentionDebugXevent', 'True'  
    
    --  View all events in the current week  
    USE msdb;  
    GO  
    DECLARE @startofweek datetime  
    DECLARE @endofweek datetime  
    SET @startofweek = DATEADD(Day, 1-DATEPART(WEEKDAY, CURRENT_TIMESTAMP), CURRENT_TIMESTAMP)   
    SET @endofweek = DATEADD(Day, 7-DATEPART(WEEKDAY, CURRENT_TIMESTAMP), CURRENT_TIMESTAMP)  
    
    EXEC managed_backup.sp_get_backup_diagnostics @begin_time = @startofweek, @end_time = @endofweek;  
    

本节中描述的步骤是专门用于在数据库上首次配置目标为 Microsoft Azure 的 SQL Server 托管备份 。 你可以使用相同的系统存储过程来修改现有配置,并提供新值。

另请参阅

目标为 Azure 的 SQL Server 托管备份