本主题介绍了将 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 主题的关键组件和概念简介部分,以及第 2 课:创建 SQL Server 凭据。
重要
SQL Server 托管备份在 Microsoft Azure 上创建用于存储备份的必要容器。 容器名称是使用“计算机名称-实例名称”格式创建的。 对于 AlwaysOn 可用性组,容器使用可用性组的 GUID 进行命名。
安全
权限
若要运行启用将 SQL Server 托管备份到 Microsoft Azure 的存储过程,你必须是System Administrator或db_backupoperator数据库角色的成员,并具有ALTER ANY CREDENTIAL权限,同时对EXECUTEsp_delete_backuphistory和smart_admin.sp_backup_master_switch存储过程具有权限。 用于查看现有设置的存储过程和函数通常分别需要对存储过程具有Execute权限,对函数具有Select权限。
启用 SQL Server 托管备份到 Microsoft Azure 的数据库和实例的注意事项
可以单独为单个数据库或整个实例启用用于Microsoft Azure 的 SQL Server 托管备份。 这些选择取决于实例上的数据库的可恢复性要求、管理多个数据库和实例的要求,以及战略性地使用 Azure 存储。
在数据库级别启用 SQL Server 托管备份以连接到 Microsoft Azure
如果某数据库的备份和保留期(恢复服务级别协议)有着不同于实例上其他数据库的特定要求,请在该数据库内配置 SQL Server 托管备份至 Microsoft Azure。 数据库级别设置会替代实例级配置设置。 但是,这两个选项可以一起使用在同一实例上。 下面是数据库级别启用 SQL Server 托管备份到 Microsoft Azure 时的优点和注意事项列表。
更精细:为每个数据库单独配置设置。 可以为各个数据库支持不同的保留期。
替代数据库的实例级别设置。
可以通过选择要备份的单个数据库来降低存储成本。
需要管理每个数据库
使用默认设置在实例级别启用 SQL Server 管理备份到 Microsoft Azure
如果实例中的大多数数据库对备份和保留策略的要求相同,或者希望创建时自动备份新的数据库实例,请使用此设置。 策略例外的一些数据库仍可以单独配置。 下面是在实例级别启用 SQL Server 托管备份到 Microsoft Azure 时的优点和注意事项列表。
实例级别的自动化:为之后添加的新数据库自动应用的通用设置。
在实例上创建新数据库后不久会自动备份这些数据库
可以应用于具有相同保留期要求的数据库。
即使在实例级别启用了使用默认设置的 SQL Server 管理的 Microsoft Azure 备份,您仍然可以配置需要不同保留期的各个数据库。 如果您不打算将备份存储到 Azure 存储中,可以禁用 SQL Server 托管备份到 Microsoft Azure 用于数据库。
为数据库启用和配置 SQL Server 托管备份到 Microsoft Azure
系统存储过程 smart_admin.sp_set_db_backup 用于为特定数据库启用 SQL Server 托管备份到 Microsoft Azure。 首次在数据库上启用 SQL Server 托管备份到 Microsoft Azure 时,除了启用此功能,还必须指定以下信息:
数据库的名称。
保留期。
用于向 Azure 存储帐户进行身份验证的 SQL 凭据。
指定不使用 @encryption_algorithm = NO_ENCRYPTION 加密或指定受支持的加密算法。 有关加密的详细信息,请参阅 备份加密。
SQL Server 托管备份功能到 Microsoft Azure 的数据库层级配置仅通过 Transact-SQL 支持。
为数据库启用 SQL Server 托管备份到 Microsoft Azure 后,将保留此信息。 如果更改配置,只需要提供数据库名称和所要更改的设置。对于未指定的其他参数,SQL Server 到 Microsoft Azure 的托管备份会保留现有值。
重要
在为数据库配置 SQL Server 托管备份到 Microsoft Azure 之前,现有配置(如果有的话)可能会很有用。 本部分后面将介绍查看数据库的配置设置的步骤。
使用 Transact-SQL:
如果首次启用 SQL Server 托管备份以Microsoft Azure,则所需的参数为:@database_name、@credential_name、@encryption_algorithm@enable_backup@storage_url 参数是可选的。 如果未为参数提供值 @storage_url ,则该值使用 SQL 凭据中的存储帐户信息派生。 如果提供存储 URL,则只应提供存储帐户根目录的 URL,并且必须与指定的 SQL 凭据中的信息匹配。
连接到数据库引擎。
在标准栏中,单击“新建查询”。
将以下示例复制并粘贴到查询窗口中,然后单击
Execute。 此示例启用 SQL Server 托管备份到 Microsoft Azure 的功能,以备份数据库“TestDB”。 保留期设置为 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 托管备份时,除了在实例上启用 SQL Server 托管备份以Microsoft Azure 之外,还必须提供以下信息:
保留期。
用于向 Azure 存储帐户进行身份验证的 SQL 凭据。
加密选项。 指定不使用 @encryption_algorithm = NO_ENCRYPTION 加密或指定受支持的加密算法。 有关加密的详细信息,请参阅 备份加密。
启用这些设置后,将保留这些设置。 如果要更改配置,则只需要数据库名称和要更改的设置。 用于Microsoft Azure 的 SQL Server 托管备份在未指定时保留现有值。
重要
在实例上将 SQL Server 托管备份配置为Microsoft Azure 之前,检查现有配置(如果有)可能很有用。 本部分后面将介绍查看数据库的配置设置的步骤。
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 分钟才能使用默认设置进行配置。 这也适用于从简单更改为完整或大容量记录恢复模式的数据库。
为数据库禁用 SQL Server 托管备份到 Microsoft Azure
可以使用系统存储过程禁用 SQL Server 托管备份到 Microsoft Azure 的设置 sp_set_db_backup 。
@enableparameter用于启用和禁用 SQL Server 托管备份到 Microsoft Azure 的特定数据库配置,其中 1 表示启用,0 表示禁用这些配置设置。
要为特定数据库禁用 SQL Server 托管备份到 Microsoft Azure:
连接到数据库引擎。
在标准栏中,单击“新建查询”。
将以下示例复制并粘贴到查询窗口中,然后单击
Execute。
Use msdb;
Go
EXEC smart_admin.sp_set_db_backup
@database_name='TestDB'
,@enable_backup=0;
GO
禁用实例上所有数据库的 SQL Server 托管备份到 Microsoft Azure
以下步骤适用于在所有当前启用了 SQL Server 托管备份到 Microsoft Azure 功能的数据库中禁用其配置设置。 存储 URL、保留期和 SQL 凭据等配置设置将保留在元数据中,如果日后为数据库启用了 SQL Server 托管备份到 Microsoft Azure,则可以使用这些设置。 若要暂时暂停 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
禁用实例的默认 SQL Server 托管备份到 Microsoft Azure 设置
实例级别的默认设置适用于在该实例上创建的所有新数据库。 如果不再需要或需要默认设置,可以使用 smart_admin.sp_set_instance_backup System 存储过程禁用此配置。 禁用不会删除其他配置设置,如存储 URL、保留设置或 SQL 凭据名称。 如果稍后为实例启用了 SQL Server 的 Microsoft Azure 托管备份功能,将使用这些设置。
若要禁用 SQL Server 托管备份在 Microsoft Azure 的默认配置:
连接到数据库引擎。
在标准栏中,单击“新建查询”。
将以下示例复制并粘贴到查询窗口中,然后单击
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 托管备份(实例级别)
有时可能需要暂时暂停 SQL Server 托管备份到 Microsoft Azure 服务以进行短时间的停运。 系统smart_admin.sp_backup_master_switch存储过程允许您在实例级别禁用 SQL Server 托管备份到 Microsoft Azure 服务。 相同的存储过程用于继续 SQL Server 托管备份到 Microsoft Azure。 该 @state 参数用于定义是否启用或禁用将 SQL Server 托管备份到 Microsoft Azure 的功能。
若要使用 Transact-SQL 暂停 SQL Server 托管备份到 Microsoft Azure 服务
连接到数据库引擎。
在标准栏中,单击“新建查询”。
将以下示例复制并粘贴到查询窗口中,然后单击
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 恢复 SQL Server 托管备份到 Microsoft Azure
连接到数据库引擎。
在标准栏中,单击“新建查询”。
将以下示例复制并粘贴到查询窗口中,然后单击
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