Azure 备份提供基于流的专用解决方案,用于备份在Azure 虚拟机(VM)中运行的SQL Server。 此解决方案符合Azure 备份零基础结构备份、长期保留和集中管理的优势。 此外,它还为SQL Server提供以下优势:
- 工作负荷感知备份,支持所有备份类型(完整备份、差异备份和日志备份)
- 15 分钟 RPO (数据恢复点目标),频繁日志备份
- 时间点恢复精确到秒级
- 单个数据库级别的备份和还原
若要查看我们目前支持的备份和还原方案,请参阅支持矩阵。 有关常见问题,请参阅 常见问题。
SQL Server 数据库的备份过程
此解决方案使用 SQL 本机 API 来备份 SQL 数据库。
指定要保护的 SQL Server VM 并查询其中的数据库后,Azure 备份服务会在该 VM 上安装名为
AzureBackupWindowsWorkload的工作负载备份扩展。此扩展包含协调器和 SQL 插件。 虽然协调器负责触发各种操作(例如配置备份、备份和还原)的工作流,但插件负责实际数据流。
为了能够发现此 VM 上的数据库,Azure 备份创建帐户
NT SERVICE\AzureWLBackupPluginSvc。 此帐户用于备份和还原,需要拥有 SQL sysadmin 权限。NT SERVICE\AzureWLBackupPluginSvc帐户是 Virtual 服务帐户,因此不需要任何密码管理。 Azure 备份使用NT AUTHORITY\SYSTEM帐户进行数据库发现/查询,因此此帐户需要是 SQL 上的公共登录名。 如果未从 Azure 市场 创建SQL Server VM,则可能会收到错误UserErrorSQLNoSysadminMembership。 如果出现错误消息, 请按照这些说明进行操作。在所选数据库上触发配置保护后,备份服务将使用备份计划和其他策略详细信息设置协调器,扩展将这些详细信息本地缓存在 VM 上。
在计划的时间,协调器与插件通信,并开始使用 VDI(虚拟设备接口)从SQL server流式传输备份数据。
插件将数据直接发送到恢复服务保管库,因此不需要暂存位置。 Azure 备份服务对存储帐户中的数据进行加密和存储。
数据传输完成后,协调器通过备份服务确认提交。
SQL Server备份的先决条件
在开始SQL Server备份之前,请查看以下先决条件:
- 请确保在Azure中运行SQL Server实例。 可以在市场中轻松创建SQL Server实例。
- 查看功能注意事项和方案支持。
- 查看有关此方案的常见问题解答。
设置 VM 权限
在SQL Server上运行发现时,Azure 备份执行以下操作:
- 添加 AzureBackupWindowsWorkload 扩展。
- 创建 NT SERVICE\AzureWLBackupPluginSvc 帐户,以发现虚拟机上的数据库。 此帐户用于备份和还原,需要拥有 SQL sysadmin 权限。
- Azure 备份 使用 NT AUTHORITY\SYSTEM 帐户检测到在 VM 上运行的数据库。 此帐户必须是 SQL 上的公共登录名。
如果未在 Azure 市场 中创建SQL Server VM,或者使用的是 SQL 2008 或 2008 R2,则可能会收到 UserErrorSQLNoSysadminMembership 错误。
若要向在 Windows 2008 R2 上运行的 SQL 2008 和 2008 R2 授予权限,请参阅本节。
对于所有其他版本,请使用以下步骤分配权限:
使用具有 SQL Server sysadmin 权限的帐户登录到 SQL Server Management Studio (SSMS)。 除非需要特殊权限,否则Windows 身份验证应正常工作。
在 SQL Server 上,打开 Security/Logins 文件夹。
右键单击“登录名”文件夹并选择“新建登录名”。 在《Login - New》中,选择《Search》。
在虚拟机注册和 SQL 发现阶段已创建 Windows 虚拟服务帐户 NT SSERVICE\AzureWLBackupPluginSvc。 输入“输入要选择的对象名称”中显示的帐户名。 选择“检查名称”以解析名称。 选择“确定”。
在 服务器角色上,确保已选择 sysadmin 角色。 选择“确定”。 现在,所需的权限应会存在。
如果 SQL Server 实例属于 Always-On 可用性组 (AG),请确保 NT AUTHORITY\SYSTEM 帐户已启用 VIEW SERVER STATE 权限。
现在,将数据库与恢复服务保管库相关联。 在 Azure portal 的 Protected Servers 列表中,右键单击处于错误状态的服务器>Rediscover DB。
在“通知”区域查看进度。 找到选定的数据库后,会显示一条成功消息。
注意事项
如果SQL Server安装了多个SQL Server实例,则必须为所有 SQL 实例添加 NT Service\AzureWLBackupPluginSvc 帐户的 sysadmin 权限。
为 SQL 2008 和 SQL 2008 R2 分配 SQL sysadmin 权限
若要将 NT AUTHORITY\SYSTEM 和 NT Service\AzureWLBackupPluginSvc 登录名添加到 SQL Server 实例,请执行以下步骤:
转到对象资源管理器中的 SQL Server 实例。
转到 安全>登录信息。
右键单击登录,然后选择新建登录

转到“ 常规 ”选项卡,输入 NT AUTHORITY\SYSTEM 作为登录名。
转到 “服务器角色 ”选项卡,选择 公共 角色和 sysadmin 角色。
转到“状态”,选择“授予权限以连接到数据库引擎”,然后选择“为登录启用”。
选择“确定”。
若要将 NT Service\AzureWLBackupPluginSvc 登录添加到 SQL Server 实例,请重复步骤 1-7。
如果登录名已存在,请确保其具有 sysadmin 服务器角色,并且在状态下,连接到数据库引擎的权限和登录名的授予选项均设置为启用。
授予权限后,通过转到 Azure 门户中的恢复服务保管库>>>,重新发现数据库。
或者,可以通过在管理员模式下运行以下 cmdlet 来自动执行权限分配。
注意事项
实例名称默认设置为 MSSQLSERVER。 根据需要更改脚本中的实例名称参数。
param(
[Parameter(Mandatory=$false)]
[string] $InstanceName = "MSSQLSERVER"
)
if ($InstanceName -eq "MSSQLSERVER")
{
$fullInstance = $env:COMPUTERNAME # In case it's the default SQL Server Instance
}
else
{
$fullInstance = $env:COMPUTERNAME + "\" + $InstanceName # In case of named instance
}
try
{
sqlcmd.exe -S $fullInstance -Q "sp_addsrvrolemember 'NT Service\AzureWLBackupPluginSvc', 'sysadmin'" # Adds login with sysadmin permission if already not available
}
catch
{
Write-Host "An error occurred:"
Write-Host $_.Exception|format-list -force
}
try
{
sqlcmd.exe -S $fullInstance -Q "sp_addsrvrolemember 'NT AUTHORITY\SYSTEM', 'sysadmin'" # Adds login with sysadmin permission if already not available
}
catch
{
Write-Host "An error occurred:"
Write-Host $_.Exception|format-list -force
}