将 SQL Server 托管备份设置到 Azure

本主题包括两个教程:

在数据库级别将 SQL Server 托管备份设置为Microsoft Azure,启用电子邮件通知并监视备份活动。

在实例级别将 SQL Server 托管备份设置为Microsoft Azure,启用电子邮件通知并监视备份活动。

有关将 SQL Server 托管备份设置为 Microsoft Azure for Availability Groups 的教程,请参阅 将 SQL Server 托管备份设置为 Microsoft Azure for Availability Groups

将 SQL Server 托管备份设置为 Microsoft Azure

为数据库启用和配置 SQL Server 管理备份至 Microsoft Azure

本教程介绍了为数据库(TestDB)启用和配置 SQL Server 托管备份到 Microsoft Azure 的必要步骤,然后介绍了启用监视 SQL Server 托管备份到 Microsoft Azure 的健康状态的步骤。

权限:

  • 要求数据库角色db_backupoperator的成员身份,并拥有ALTER ANY CREDENTIAL权限,以及对sp_delete_backuphistory存储过程的EXECUTE权限。

  • 需要对 smart_admin.fn_get_current_xevent_settings函数具有 SELECT 权限。

  • 需要对 smart_admin.sp_get_backup_diagnostics 存储过程具备EXECUTE 权限。 此外,它还需要 VIEW SERVER STATE 权限,因为它在内部调用需要此权限的其他系统对象。

  • 需要权限EXECUTE,才能访问smart_admin.sp_set_instance_backupsmart_admin.sp_backup_master_switch存储过程。

  1. 创建Microsoft Azure 存储帐户: 备份存储在 Microsoft Azure 存储服务中。 如果还没有帐户,必须先创建Microsoft Azure 存储帐户。

    • SQL Server 2014 使用页 Blob,它们不同于块 blob 和追加 Blob。 因此,必须创建常规用途帐户,而不是 Blob 帐户。 有关详细信息,请参阅有关 Azure 存储帐户
    • 记下存储帐户名称和访问密钥。 存储帐户名称和访问密钥信息用于创建 SQL 凭据。 SQL 凭据用于向存储帐户进行身份验证。
  2. 创建 SQL 凭据: 使用存储帐户的名称作为标识和存储访问密钥作为密码创建 SQL 凭据。

  3. 确保 SQL Server 代理服务已启动并运行: 启动 SQL Server 代理(如果当前未运行)。 要使用 SQL Server 管理备份到 Microsoft Azure,必须确保 SQL Server 代理正在实例上运行以执行备份操作。 你可能希望将 SQL Server 代理设置为自动运行,以确保可以定期执行备份作。

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

  5. 启用和配置 SQL Server 托管备份到 Microsoft Azure:启动 SQL Server Management Studio 并连接到安装数据库的 SQL Server 实例。 在根据要求修改数据库名称、SQL 凭据、保留期和加密选项的值后,在查询窗口中运行以下语句:

    有关创建用于加密的证书的详细信息,请参阅“创建加密备份”中的“创建备份证书”步骤。

    Use msdb;  
    GO  
    EXEC smart_admin.sp_set_db_backup   
                    @database_name='TestDB'   
                    ,@retention_days=30   
                    ,@credential_name='MyCredential'  
                    ,@encryption_algorithm ='AES_128'  
                    ,@encryptor_type= 'Certificate'  
                    ,@encryptor_name='MyBackupCert'  
                    ,@enable_backup=1;  
    GO  
    
    

    SQL Server 托管备份到 Microsoft Azure 现已在指定的数据库上启用。 数据库上的备份作可能需要长达 15 分钟才能开始运行。

  6. 查看扩展事件默认配置: 通过运行以下 transact-SQL 语句来查看扩展事件设置。

    SELECT * FROM smart_admin.fn_get_current_xevent_settings()  
    

    应会看到管理员、作和分析通道事件默认处于启用状态,并且无法禁用。 这应该足以监视需要手动干预的事件。 可以启用调试事件,但调试通道包括 SQL Server 托管备份到 Microsoft Azure 用来检测问题并解决这些问题的信息和调试事件。 有关详细信息,请参阅 监视 SQL Server 托管备份到 Microsoft Azure

  7. 启用和配置运行状况通知: SQL Server 托管备份到 Microsoft Azure 包含一个存储过程,它用于创建代理作业,以发送可能需要关注的错误或警告的电子邮件通知。 以下步骤介绍了启用和配置电子邮件通知的过程:

    1. 设置数据库邮件(如果尚未在实例上启用)。 有关详细信息,请参阅 配置数据库邮件

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

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

      EXEC msdb.smart_admin.sp_set_parameter  
      @parameter_name = 'SSMBackup2WANotificationEmailIds',  
      @parameter_value = '<email1;email2>'  
      
      

      以了解详细信息和获取完整的示例脚本,请参阅 监视 SQL Server 托管备份到 Microsoft Azure

  8. 在 Microsoft Azure 存储帐户中查看备份文件: 从 SQL Server Management Studio 或 Azure 管理门户连接到存储帐户。 你将看到一个容器,其中的 SQL Server 实例托管的数据库已配置为使用 SQL Server 托管备份至 Microsoft Azure。 在为数据库启用 SQL Server 托管备份Microsoft Azure 后,还可以在 15 分钟内看到数据库和日志备份。

  9. 监视运行状况: 可以通过之前配置的电子邮件通知进行监视,也可以主动监视记录的事件。 下面是用于查看事件的一些示例 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 smart_admin.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 smart_admin.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 smart_admin.sp_get_backup_diagnostics @begin_time = @startofweek, @end_time = @endofweek;  
    
    

本部分中介绍的步骤专门用于在数据库上首次将 SQL Server 托管备份配置为Microsoft Azure。 可以使用与 smart_admin.sp_set_db_backup 相同的系统存储过程修改现有配置,并提供新值。 有关详细信息,请参阅 SQL Server 托管备份到 Microsoft Azure - 保留和存储设置

为具有默认设置的实例启用到 Microsoft Azure 的 SQL Server 托管备份

本教程描述了为实例“MyInstance”启用并配置 SQL Server 托管备份到 Microsoft Azure 的步骤。 它包括启用监视 SQL Server 托管备份到 Microsoft Azure 的运行状况的步骤。

权限:

  • 要求db_backupoperator数据库角色的成员身份,并具有 ALTER ANY CREDENTIAL 权限和EXECUTE对sp_delete_backuphistory存储过程的权限。

  • 需要对 smart_admin.fn_get_current_xevent_settings函数具有 SELECT 权限。

  • EXECUTE需要对 smart_admin.sp_get_backup_diagnostics 存储过程具有权限。 此外,它还需要 VIEW SERVER STATE 权限,因为它在内部调用需要此权限的其他系统对象。

  1. 创建Microsoft Azure 存储帐户: 备份存储在 Microsoft Azure 存储服务中。 如果还没有帐户,必须先创建Microsoft Azure 存储帐户。

    • SQL Server 2014 使用页 blob,这些与块 blob 和追加 blob 有所不同。 因此,必须创建常规用途帐户,而不是 Blob 帐户。 有关详细信息,请参阅有关 Azure 存储帐户
    • 记下存储帐户名称和访问密钥。 存储帐户名称和访问密钥信息用于创建 SQL 凭据。 SQL 凭据用于向存储帐户进行身份验证。
  2. 创建 SQL 凭据: 使用存储帐户的名称作为标识和存储访问密钥作为密码创建 SQL 凭据。

  3. 确保 SQL Server 代理服务已启动并运行: 启动 SQL Server 代理(如果当前未运行)。 将 SQL Server 托管备份到 Microsoft Azure 要求在实例上运行 SQL Server 代理才能执行备份操作。 你可能希望将 SQL Server 代理设置为自动运行,以确保可以定期执行备份作。

  4. 确定保留期: 确定备份文件的保留期。 保留期以天为单位指定,范围为 1 到 30。 在实例级别启用 SQL Server 托管备份到 Microsoft Azure 后,默认创建的所有新数据库都将继承设置。 仅支持设置为完整或大容量日志恢复模式的数据库,并且将自动配置。 如果您不希望配置 SQL Server 的托管备份至 Microsoft Azure,您可以随时为某个特定数据库禁用此功能。 还可以通过在数据库级别将 SQL Server 托管备份配置为Microsoft Azure 来更改特定数据库的配置。

  5. 启用和配置 SQL Server 托管备份到 Microsoft Azure: 启动 SQL Server Management Studio 并连接到 SQL Server 实例。 在根据要求修改数据库名称、SQL 凭据、保留期和加密选项后,在查询窗口中运行以下语句:

    有关创建用于加密的证书的详细信息,请参阅“创建加密备份”中的“创建备份证书”步骤。

    Use msdb;  
    Go  
       EXEC smart_admin.sp_set_instance_backup  
                     @enable_backup=1  
                    ,@retention_days=30   
                    ,@credential_name='sqlbackuptoURL'  
                    ,@encryption_algorithm ='AES_128'  
                    ,@encryptor_type= 'Certificate'  
                    ,@encryptor_name='MyBackupCert';  
    GO  
    
    

    SQL Server 托管备份到 Microsoft Azure 现在已在实例上启用。

  6. 通过运行以下 Transact-SQL 语句来验证配置设置:

    Use msdb;  
    GO  
    SELECT * FROM smart_admin.fn_backup_instance_config ();  
    
    
  7. 在实例上创建新数据库。 运行以下 Transact-SQL 语句,查看 SQL Server 托管备份到 Microsoft Azure 的数据库配置设置。

    Use msdb  
    GO  
    SELECT * FROM smart_admin.fn_backup_db_config('NewDB')  
    

    设置显示和数据库上的备份操作开始运行可能最长需要 15 分钟。

  8. 启用和配置运行状况通知: SQL Server 托管备份到 Microsoft Azure 具有一个存储过程,用于创建代理作业,以发送可能需要注意的错误或警告的电子邮件通知。 若要接收此类通知,必须运行启用创建 SQL Server 代理作业的存储过程。 以下步骤介绍了启用和配置电子邮件通知的过程:

    1. 设置数据库邮件(如果尚未在实例上启用)。 有关详细信息,请参阅 配置数据库邮件

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

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

      EXEC msdb.smart_admin.sp_set_parameter  
      @parameter_name = 'SSMBackup2WANotificationEmailIds',  
      @parameter_value = '<email address>'  
      
      

      有关监视方法的更多信息及完整示例脚本,请参阅 将 SQL Server 托管备份监视到 Microsoft Azure

  9. 在 Microsoft Azure 存储帐户中查看备份文件: 从 SQL Server Management Studio 或 Azure 管理门户连接到存储帐户。 你将看到承载数据库的 SQL Server 实例的容器,该数据库已配置为使用 SQL Server 托管备份到 Microsoft Azure。 在创建新数据库 15 分钟内,还可以看到数据库和日志备份。

  10. 监视运行状况: 可以通过之前配置的电子邮件通知进行监视,也可以主动监视记录的事件。 下面是用于查看事件的一些示例 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 smart_admin.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 smart_admin.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 smart_admin.sp_get_backup_diagnostics @begin_time = @startofweek, @end_time = @endofweek;  
    
    

可以通过在数据库级别专门配置设置,为特定数据库覆盖 SQL Server 托管备份到 Microsoft Azure 的默认设置。 还可以暂时暂停和恢复 SQL Server 托管备份到 Microsoft Azure 服务。 有关详细资料,请参阅 SQL Server 托管备份至 Microsoft Azure - 保留和存储设置