针对 Azure 的 SQL Server 托管备份 - 保留和存储设置
本主题介绍为数据库配置 SQL Server Microsoft Azure 托管备份以及为实例配置默认设置的基本步骤。 本主题还介绍了暂停和恢复实例SQL Server托管备份到 Microsoft Azure 服务所需的步骤。
有关设置SQL Server托管备份到 Microsoft Azure 的完整演练,请参阅设置SQL Server托管备份到 Azure 和为可用性组设置SQL Server托管备份到 Azure。
开始之前
限制和局限
- 不要在当前使用维护计划或日志传送的数据库上启用SQL Server托管备份到 Microsoft Azure。 有关与其他SQL Server功能的互操作性和共存的详细信息,请参阅SQL Server托管备份到 Azure:互操作性和共存
先决条件
SQL Server 代理应运行。
警告
如果 SQL Server 代理停止了一段时间然后重新启动,则取决于 SQL 代理停止和启动之间的时间长度,可能会看到备份活动增多,并且可能有日志备份的积压工作等待运行。 应考虑将 SQL Server 代理配置为在启动时自动启动。
在配置SQL Server Microsoft Azure 托管备份之前,应创建 Azure 存储帐户和将身份验证信息存储到存储帐户的 SQL 凭据。 有关详细信息,请参阅 SQL Server 备份到 URL 主题的 Introduction to Key Components and Concepts 部分以及 Lesson 2: Create a SQL Server Credential。
重要
SQL Server托管备份到 Microsoft Azure 会创建存储备份所需的容器。 容器名称是使用“计算机名称-实例名称”格式创建的。 对于 AlwaysOn 可用性组,使用可用性组的 GUID 为容器命名。
安全性
权限
若要运行启用 microsoft Azure SQL Server托管备份的存储过程,必须是System Administrator
具有 ALTER ANY CREDENTIAL 权限的 db_backupoperator 数据库角色中的 或 成员,并且EXECUTE
对sp_delete_backuphistory和smart_admin.sp_backup_master_switch
存储过程具有权限。 用于查看现有设置的存储过程和函数通常分别需要针对存储过程的 Execute
权限以及针对函数的 Select
权限。
启用SQL Server托管备份到 Microsoft Azure 的数据库和实例的注意事项
SQL Server可以单独为单个数据库或整个实例启用 Microsoft Azure 托管备份。 这些选择取决于实例上数据库的可恢复性要求、管理多个数据库和实例以及战略性地使用 Azure 存储的要求。
在数据库级别启用SQL Server托管备份到 Microsoft Azure
如果数据库对备份和保留期有特定的要求, (可恢复性 SLA) 与实例上的其他数据库不同,请在数据库级别配置SQL Server托管备份到 Microsoft Azure。 数据库级别设置将取代实例级别配置设置。 但是,可对同一实例一起使用这两个选项。 下面是在数据库级别启用SQL Server托管备份到 Microsoft Azure 时的优势和注意事项列表。
更精细:每个数据库有单独的配置设置。 个别数据库可支持不同的保持期。
取代数据库的实例级别设置。
可用于通过选择要备份的单独数据库,降低存储成本。
需要管理每个数据库
使用默认设置在实例级别启用SQL Server托管备份到 Microsoft Azure
如果实例中的大多数数据库对备份和保持策略具有相同的要求,或者如果您希望在创建时自动备份新数据库实例,则使用此设置。 仍可单独配置对于策略是例外的几个数据库。 下面是在实例级别启用 microsoft Azure SQL Server托管备份时的优势和注意事项列表。
实例级别的自动化:常用设置自动应用于之后新添加的数据库。
在实例上创建新数据库后很快就自动备份这些数据库
可应用于保持期要求相同的数据库。
即使使用默认设置在实例级别启用了 Microsoft Azure 托管备份SQL Server,仍可以配置需要不同保留期的单个数据库。 如果不打算使用 Azure 存储进行备份,还可以为数据库禁用SQL Server Microsoft Azure 托管备份。
为数据库启用和配置 microsoft Azure SQL Server托管备份
系统存储过程smart_admin.sp_set_db_backup
用于为特定数据库启用 microsoft Azure SQL Server托管备份。 首次在数据库上启用SQL Server托管备份到 Microsoft Azure 时,除了启用对 Microsoft Azure SQL Server托管备份外,还必须指定以下信息:
数据库的名称。
保持期。
用于向 Azure 存储帐户进行身份验证的 SQL 凭据。
指定不使用 @encryption_algorithm = NO_ENCRYPTION 进行加密,或者指定支持的加密算法。 有关加密的详细信息,请参阅 Backup Encryption。
SQL Server仅通过 Transact-SQL 支持对 Microsoft Azure 进行数据库级配置的托管备份。
SQL Server为数据库启用 Microsoft Azure 托管备份后,此信息将持久保存。 如果要更改配置,则只需要数据库名称和要更改的设置,SQL Server Microsoft Azure 托管备份会在未指定时保留其他参数的现有值。
重要
在数据库上配置 microsoft Azure SQL Server托管备份之前,对于现有配置(如果有)可能很有用。 在本节的后面将介绍查看数据库的配置设置的步骤。
使用 Transact-SQL:
如果是首次启用 microsoft Azure SQL Server托管备份,则所需的参数为:@database_name、@credential_name、@encryption_algorithm@enable_backup@storage_url 参数是可选的。 如果未为 @storage_url 参数提供值,则使用 SQL 凭据中的存储帐户信息派生该值。 如果提供存储 URL,则只应为存储帐户的根提供该 URL,并且该 URL 必须与您指定的 SQL 凭据中的信息相符。
连接到 数据库引擎。
在标准菜单栏上,单击 “新建查询” 。
将以下示例复制并粘贴到查询窗口中,然后单击
Execute
。 此示例为数据库“TestDB”启用SQL Server托管备份到 Microsoft Azure。 保持期设置为 30 天。 本例通过指定加密算法和加密程序信息,使用加密选项。
Use msdb; GO EXEC smart_admin.sp_set_db_backup @database_name='TestDB' ,@enable_backup=1 ,@retention_days =30 ,@credential_name ='MyCredential' ,@encryption_algorithm ='AES_256' ,@encryptor_type= 'Certificate' ,@encryptor_name='MyBackupCert' GO
有关此存储过程的详细信息,请参阅 smart_admin.set_db_backup (Transact-SQL)
若要查看数据库的配置设置,请使用以下查询:
Use msdb GO SELECT * FROM smart_admin.fn_backup_db_config('TestDB')
为实例启用和配置默认SQL Server Microsoft Azure 托管备份设置
可以通过两种方式在实例级别启用和配置默认SQL Server Microsoft Azure 托管备份设置:使用系统存储过程smart_admin.set_instance_backup
或SQL Server Management Studio。 下面说明了这两种方法:
smart_admin.set_instance_backup:。 通过为 @enable_backup 参数指定值 1 ,可启用备份并设置默认配置。 在实例级别应用后,将这些默认设置应用于添加到此实例的任何新数据库。 首次启用 Microsoft Azure SQL Server托管备份时,除了在 实例上启用 microsoft Azure SQL Server托管备份外,还必须提供以下信息:
保持期。
用于向 Azure 存储帐户进行身份验证的 SQL 凭据。
加密选项。 指定不使用 @encryption_algorithm = NO_ENCRYPTION 进行加密,或者指定支持的加密算法。 有关加密的详细信息,请参阅 Backup Encryption。
启用后,这些设置将被保留。 如果要更改配置,则只需要数据库名称和要更改的设置。 SQL Server Microsoft Azure 的托管备份会在未指定时保留现有值。
重要
在实例上配置 microsoft Azure SQL Server托管备份之前,为现有配置检查(如果有)可能会很有用。 在本节的后面将介绍查看数据库的配置设置的步骤。
SQL Server Management Studio: 若要在 SQL Server Management Studio 中执行此任务,请转到对象资源管理器,展开 “管理” 节点,然后右键单击 “托管备份”。 选择“配置” 。 这将打开 “托管备份” 对话框。 使用此对话框可指定保持期、SQL 凭据、存储 URL 和加密设置。 有关此对话框的具体帮助,请参阅配置托管备份 (SQL Server Management Studio) 。
“使用 Transact-SQL”
连接到 数据库引擎。
在标准菜单栏上,单击 “新建查询” 。
将以下示例复制并粘贴到查询窗口中,然后单击
Execute
。
Use msdb;
Go
EXEC smart_admin.sp_set_instance_backup
@retention_days=30
,@credential_name='sqlbackuptoURL'
,@encryption_algorithm ='AES_128'
,@encryptor_type= 'Certificate'
,@encryptor_name='MyBackupCert'
,@enable_backup=1;
GO
若要查看实例的默认配置设置,请使用以下查询:
Use msdb;
GO
SELECT * FROM smart_admin.fn_backup_instance_config ();
使用 PowerShell
启动 PowerShell 实例
在修改后运行以下脚本以便适合您的设置
cd SQLSERVER:\SQL\Computer\MyInstance $encryptionOption = New-SqlBackupEncryptionOption -EncryptionAlgorithm Aes128 -EncryptorType ServerCertificate -EncryptorName "MyBackupCert" Get-SqlSmartAdmin | Set-SqlSmartAdmin -BackupEnabled $True -BackupRetentionPeriodInDays 10 -EncryptionOption $encryptionOption
重要
在您在配置默认设置后创建新的数据库时,最多需要用 15 分钟以便使用默认设置配置该数据库。 这也将应用于从 Simple 更改为 Full 或 Bulk-Logged 恢复模型的数据库。
为数据库禁用 Microsoft Azure 的 SQL Server 托管备份
可以使用系统存储过程禁用SQL Server Microsoft Azure 托管备份设置sp_set_db_backup
。 @enableparameter用于为特定数据库启用和禁用SQL Server Microsoft Azure 托管备份配置,其中 1 启用,0 禁用配置设置。
为特定数据库禁用 Microsoft Azure 的 SQL Server 托管备份 :
连接到 数据库引擎。
在标准菜单栏上,单击 “新建查询” 。
将以下示例复制并粘贴到查询窗口中,然后单击
Execute
。
Use msdb;
Go
EXEC smart_admin.sp_set_db_backup
@database_name='TestDB'
,@enable_backup=0;
GO
为实例上的所有数据库禁用 Microsoft Azure 的 SQL Server 托管备份
下面的过程适用于要从实例上当前启用了 Microsoft Azure 的 SQL Server 托管备份 的所有数据库禁用 Microsoft Azure 的 SQL Server 托管备份 配置设置的情形。 存储 URL、保持和 SQL 凭据之类的配置设置将在元数据中保留;并且如果以后为数据库启用了 Microsoft Azure 的 SQL Server 托管备份 ,则可以使用这些设置。 如果只想暂时暂停SQL Server托管备份到 Microsoft Azure 服务,可以使用本主题后面的以下部分中介绍的主开关。
若要对所有数据库禁用SQL Server托管备份到 Microsoft Azure:
连接到 数据库引擎。
在标准菜单栏上,单击 “新建查询” 。
将以下示例复制并粘贴到查询窗口中,然后单击
Execute
。 以下示例确定是否在实例级别配置SQL Server Microsoft Azure 托管备份,以及实例上所有SQL Server已启用 Microsoft Azure 的数据库托管备份,并执行系统存储过程sp_set_db_backup
以禁用SQL Server托管备份到 Microsoft Azure。
-- Create a working table to store the database names
Declare @DBNames TABLE
(
RowID int IDENTITY PRIMARY KEY
,DBName varchar(500)
)
-- Define the variables
DECLARE @rowid int
DECLARE @dbname varchar(500)
DECLARE @SQL varchar(2000)
-- Get the database names from the system function
INSERT INTO @DBNames (DBName)
SELECT db_name
FROM
smart_admin.fn_backup_db_config (NULL)
WHERE is_smart_backup_enabled = 1
--Select DBName from @DBNames
select @rowid = min(RowID) FROM @DBNames
WHILE @rowID IS NOT NULL
Begin
Set @dbname = (Select DBName From @DBNames Where RowID = @rowid)
Begin
Set @SQL = 'EXEC smart_admin.sp_set_db_backup
@database_name= '''+'' + @dbname+ ''+''',
@enable_backup=0'
EXECUTE (@SQL)
END
Select @rowid = min(RowID)
From @DBNames Where RowID > @rowid
END
若要查看实例上所有数据库的配置设置,请使用以下查询:
Use msdb;
GO
SELECT * FROM smart_admin.fn_backup_db_config (NULL);
GO
禁用实例的默认 Microsoft Azure 的 SQL Server 托管备份 设置
实例级别的默认设置适用于在该实例上创建的所有新数据库。 如果不再需要默认设置,则可以通过使用 smart_admin.sp_set_instance_backup 系统存储过程,禁用此配置。 禁用并不会删除存储 URL、保持设置或 SQL 凭据名称之类的其他配置设置。 如果以后为该实例启用了 Microsoft Azure 的 SQL Server 托管备份 ,将使用这些设置。
禁用 Microsoft Azure 的 SQL Server 托管备份 默认配置设置:
连接到 数据库引擎。
在标准菜单栏上,单击 “新建查询” 。
将以下示例复制并粘贴到查询窗口中,然后单击
Execute
。Use msdb; Go EXEC smart_admin.sp_set_instance_backup @enable_backup=0; GO
使用 PowerShell
启动 PowerShell 实例
运行以下脚本:
cd SQLSERVER:\SQL\Computer\MyInstance Set-SqlSmartAdmin -BackupEnabled $False
在实例级别暂停 Microsoft Azure 的 SQL Server 托管备份
有时可能需要在短期内临时暂停 Microsoft Azure 的 SQL Server 托管备份 服务。 系统smart_admin.sp_backup_master_switch
存储过程允许在实例级别禁用SQL Server Microsoft Azure 服务的托管备份。 使用相同的存储过程恢复 Microsoft Azure 的 SQL Server 托管备份。 参数@state用于定义是应关闭还是打开 Microsoft Azure SQL Server托管备份。
使用 Transact-SQL 暂停 Microsoft Azure 的 SQL Server 托管备份 服务:
连接到 数据库引擎。
在标准菜单栏上,单击 “新建查询” 。
将以下示例复制并粘贴到查询窗口中,然后单击
Execute
Use msdb;
GO
EXEC smart_admin.sp_backup_master_switch @new_state=0;
Go
使用 PowerShell 暂停SQL Server Microsoft Azure 的托管备份
启动 PowerShell 实例
在修改后运行以下脚本以便适合您的设置
cd SQLSERVER:\SQL\Computer\MyInstance Get-SqlSmartAdmin | Set-SqlSmartAdmin -MasterSwitch $False
使用 Transact-SQL 恢复 Microsoft Azure 的 SQL Server 托管备份 :
连接到 数据库引擎。
在标准菜单栏上,单击 “新建查询” 。
将以下示例复制并粘贴到查询窗口中,然后单击
Execute
。
Use msdb;
Go
EXEC smart_admin. sp_backup_master_switch @new_state=1;
GO
使用 PowerShell 恢复SQL Server托管备份到 Microsoft Azure
启动 PowerShell 实例
在修改后运行以下脚本以便适合您的设置
cd SQLSERVER:\SQL\Computer\MyInstance Get-SqlSmartAdmin | Set-SqlSmartAdmin -MasterSwitch $True