你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
Azure VM 上的 SQL Server 自动备份
从 SQL Server 2016 或更高版本的标准版、企业版或开发者版开始,自动备份功能会为 Azure VM 上 SQL Server 的所有现有数据库和新数据库自动配置托管备份到 Microsoft Azure。 这样,便可以配置使用持久 Azure Blob 存储的定期数据库备份。
先决条件
要对 Azure VM 上的 SQL Server 使用自动备份,需要:
- 使用 SQL IaaS 代理扩展注册的 Azure VM 上的 SQL Server。
- Windows Server 2012 R2 或更高版本。
- SQL Server 2016 及更高版本。 有关 SQL Server 2014,请参阅适用于 SQL Server 2014 的自动备份。
- 数据库配置:
- 目标用户数据库必须使用完整恢复模式。 系统数据库不需要使用完整恢复模式。 但是,如果需要为
model
或msdb
创建日志备份,则必须使用完整恢复模型。 有关对备份使用完整恢复模型产生的影响的详细信息,请参阅使用完整恢复模型的备份。 - SQL Server VM 已注册到 SQL IaaS 代理扩展,并且已启用“自动备份”功能。 由于自动备份依赖于扩展,因此只有默认实例或单个命名实例的目标数据库支持自动备份。 如果没有默认实例,并且存在多个命名实例,SQL IaaS 代理扩展将失败,自动备份将无法工作。
- 如果在辅助 Always On 可用性组副本上运行自动备份,则该副本必须是可读副本才能使备份成功。
- 目标用户数据库必须使用完整恢复模式。 系统数据库不需要使用完整恢复模式。 但是,如果需要为
设置
下表描述了可为自动备份配置的选项。 实际配置步骤根据你使用的是 Azure 门户还是 Azure Windows PowerShell 命令而有所不同。 自动备份默认使用备份压缩,无法禁用。
基本设置
设置 | 范围(默认值) | 说明 |
---|---|---|
自动备份 | 启用/禁用(已禁用) | 为运行 SQL Server 2016 或更高版本 Developer、Standard 或 Enterprise 的 Azure VM 启用或禁用自动备份。 |
保持期 | 1-90 天(90 天) | 服务在 msdb 中保留备份元数据的天数。 在备份的保留期到期后,系统将从 msdb 中删除元数据,但不会从存储容器中删除文件。 可以使用存储帐户的生命周期管理策略,来根据业务需求平衡备份保留期与成本管理。 |
存储帐户 | Azure 存储帐户 | 用于在 Blob 存储中存储自动备份文件的 Azure 存储帐户。 在此位置创建容器,用于存储所有备份文件。 备份文件命名约定包括日期、时间和数据库 GUID。 |
加密 | 启用/禁用(已禁用) | 启用或禁用备份加密。 启用备份加密时,用于还原备份的证书使用相同的命名约定存放在同一 automaticbackup 容器中的指定存储帐户内。 如果密码发生更改,则使用该密码生成新证书,但旧证书在备份之前仍会还原。 |
密码 | 密码文本 | 加密密钥的密码。 仅当启用了加密时才需要此设置。 若要还原加密的备份,必须具有创建该备份时使用的正确密码和相关证书。 |
高级设置
设置 | 范围(默认值) | 说明 |
---|---|---|
系统数据库备份 | 启用/禁用(已禁用) | 启用后,此功能还会备份系统数据库:master 、msdb 和 model 。 对于 msdb 和 model 数据库,如果想要创建日志备份,请验证这些数据库是否处于完整恢复模式。 永远不会为 master 数据库创建日志备份,也不会为 tempdb 创建任何备份。 |
备份计划 | 手动/自动(自动) | 默认情况下,系统会根据日志的增长情况自动确定备份计划。 用户可以使用手动备份计划来指定备份时段。 此情况下,仅按指定的频率、在特定日期的指定时段内进行备份。 |
完整备份频率 | 每日/每周 | 完整备份的频率。 上述两种情况下,均在下一个计划的时间段内开始完整备份。 如果选择“每周”,备份可能会跨越好几天,直到所有数据库都已成功备份。 |
完整备份开始时间 | 00:00 – 23:00 (01:00) | 在给定的日期可以开始执行完整备份的时间。 |
完整备份时段 | 1 – 23 小时(1 小时) | 在给定的日期可以执行完整备份的时段持续时间。 |
日志备份频率 | 5 – 60 分钟(60 分钟) | 日志备份的频率。 |
注意
自动备份计划根据日志增长情况进行备份。 不建议在数据库处于简单恢复模式时使用自动备份。
了解完整备份频率
必须了解每日与每周完整备份之间的差别。 请考虑以下两个示例解决方案。
应用场景 1:每周备份
某个 SQL Server VM 包含多个大型数据库。
在星期一,用户使用以下设置启用了自动备份:
- 备份计划:手动
- 完整备份频率:每周
- 完整备份开始时间:01:00
- 完整备份时段:1 小时
这意味着,下一个可用备份时段为星期二凌晨 1 点,持续时间为 1 小时。 到时,自动备份将开始逐个备份数据库。 在此方案中,由于数据库非常大,完整备份将完成前几个数据库。 但是,一小时后,并非所有数据库都能得到备份。
如果出现此情况,自动备份会在第二天(即星期三凌晨 1 点)备份剩余的数据库,此操作持续 1 小时。 如果到时仍无法备份所有数据库,系统会在后一天的同一时间再次尝试备份。 在所有数据库均已成功备份之前,系统会不断执行此计划。
再次达到星期二后,自动备份会重新开始备份所有数据库。
此方案表明,自动备份仅在指定的时段内运行,且每个数据库每周备份一次。 另外,如果在一天内无法完成所有备份,备份可能会跨越好几天。
应用场景 2:每日备份
某个 SQL Server VM 包含多个大型数据库。
在星期一,用户使用以下设置启用了自动备份:
- 备份计划:手动
- 完整备份频率:每日
- 完整备份开始时间:22:00
- 完整备份时段:6 小时
这意味着,下一个可用备份时段为星期一晚上 10 点,持续时间为 6 小时。 到时,自动备份将开始逐个备份数据库。
然后,在星期二晚上 10 点,再次开始完整备份所有数据库,此操作持续为 6 小时。
重要
备份在每个间隔期间按顺序发生。 对于具有大量数据库的实例,请计划时间足以容纳所有备份的备份间隔。 如果备份无法在给定的间隔内完成,则可能会跳过某些备份,并且单个数据库的两次备份之间的时间可能会超过已配置的备份间隔时间,这可能会对还原点目标 (RPO) 造成负面影响。
配置新 VM
在资源管理器部署模型中创建新的 SQL Server 2016 或更高版本计算机时,使用 Azure 门户配置自动备份。
在“SQL Server 设置”选项卡上,选择“自动备份”下的“启用”。 启用自动备份后,可以配置以下设置:
- 备份保留期(最长 90 天)
- 用于备份的存储帐户和存储容器
- 备份的加密选项和密码
- 备份系统数据库
- 配置备份计划
若要加密备份,请选择“启用”。 然后指定密码。 Azure 创建一个证书来加密备份,并使用指定的密码来保护该证书。
选择“选择存储容器”以指定要存储备份的容器。
默认情况下,计划是自动设置的,但你可以通过选择“手动”来创建自己的计划,这样就可以配置备份频率、备份时间窗口和日志备份频率(以分钟为单位)。
以下 Azure 门户屏幕截图显示了创建新 SQL Server VM 时的自动备份设置:
配置现有 VM
对于现有的 SQL Server 虚拟机,请转到 SQL 虚拟机资源,然后选择“备份”以配置自动备份。
选择“启用”以配置自动备份设置。
可以配置保留期(最长 90 天)、要在其中存储备份的存储帐户的容器以及加密和备份计划。 默认情况下,计划是自动的。
如果要设置自己的备份计划,请选择“手动”并配置备份频率、是否要备份系统数据库以及事务日志备份间隔(以分钟为单位)。
完成后,选择“备份”设置页底部的“应用”按钮,以保存更改。
首次启用自动备份时,Azure 会在后台配置 SQL Server IaaS 代理。 在此期间,Azure 门户可能不会显示自动备份已配置。 请等待几分钟,以便安装和配置代理。 之后,Azure 门户将反映出新设置。
使用 PowerShell 配置
可使用 PowerShell 配置自动备份。 开始之前,必须:
- 下载并安装最新的 Azure PowerShell。
- 打开 Windows PowerShell 并使用 Connect-AzAccount 命令将其与帐户关联。
注意
本文使用 Azure Az PowerShell 模块,这是与 Azure 交互时推荐使用的 PowerShell 模块。 若要开始使用 Az PowerShell 模块,请参阅安装 Azure PowerShell。 若要了解如何迁移到 Az PowerShell 模块,请参阅 将 Azure PowerShell 从 AzureRM 迁移到 Az。
安装 SQL Server IaaS 扩展
如果通过 Azure 门户预配了 SQL Server 虚拟机,应已安装 SQL Server IaaS 扩展。 可通过调用 Get-AzVM 命令并检查 Extensions 属性,确定是否为 VM 安装了该扩展。
$vmname = "yourvmname"
$resourcegroupname = "yourresourcegroupname"
(Get-AzVM -Name $vmname -ResourceGroupName $resourcegroupname).Extensions
如果已安装 SQL Server IaaS 代理扩展,应会看到其列为“SqlIaaSAgent”或“SQLIaaSExtension”。扩展的 ProvisioningState 也应显示“Succeeded”。
如果未安装或未能预配该扩展,可使用以下命令进行安装。 除了 VM 名称和资源组以外,还必须指定 VM 所在的区域 ( $region)。
$region = "EASTUS2"
Set-AzVMSqlServerExtension -VMName $vmname `
-ResourceGroupName $resourcegroupname -Name "SQLIaasExtension" `
-Version "2.0" -Location $region
验证当前设置
如果在预配期间启用了自动备份,可以使用 PowerShell 检查当前配置。 运行 Get-AzVMSqlServerExtension 命令并检查 AutoBackupSettings 属性:
(Get-AzVMSqlServerExtension -VMName $vmname -ResourceGroupName $resourcegroupname).AutoBackupSettings
应会看到类似于下面的输出:
Enable : True
EnableEncryption : False
RetentionPeriod : 30
StorageUrl : https://test.blob.core.windows.net/
StorageAccessKey :
Password :
BackupSystemDbs : False
BackupScheduleType : Manual
FullBackupFrequency : WEEKLY
FullBackupStartTime : 2
FullBackupWindowHours : 2
LogBackupFrequency : 60
如果输出显示“启用”设置为“False”,则必须启用自动备份 。 幸运的是,可通过相同的方式启用和配置自动备份。 有关信息,请参阅下一部分。
注意
如果在进行更改后立即检查设置,看到的可能是旧配置值。 请等待几分钟再检查设置,确保更改已应用。
配置自动备份
随时可以使用 PowerShell 来启用自动备份以及修改其配置和行为。
首先,为备份文件选择或创建存储帐户。 以下脚本将选择一个存储帐户,或者创建一个存储帐户(如果不存在)。
$vmname = "yourvmname"
$resourcegroupname = "yourresourcegroupname"
$storage_accountname = "yourstorageaccount"
$storage_url = "https://yourstorageaccount.blob.core.windows.net/"
$storage = Get-AzStorageAccount -ResourceGroupName $resourcegroupname `
-Name $storage_accountname -ErrorAction SilentlyContinue
If (-Not $storage)
{ $storage = New-AzStorageAccount -ResourceGroupName $resourcegroupname `
-Name $storage_accountname -SkuName Standard_GRS -Location $region }
注意
自动备份不支持在高级存储中存储备份,但可以从使用高级存储的 VM 磁盘创建备份。
如果要在存储帐户中使用自定义容器进行备份,请使用以下脚本检查容器或创建容器(如果不存在)。
$storage_container = "backupcontainer"
New-AzStorageContainer -Name $storage_container -Context $storage.Context
if (!(Get-AzStorageAccount -StorageAccountName $storage_accountname -ResourceGroupName $resourcegroupname | Get-AzStorageContainer | Where-Object { $_.Name -eq $storage_container })){ `
New-AzStorageContainer -Name $storage_container -Context $storage.Context `
} `
else `
{ `
Write-Warning "Container $storage_container already exists." `
}
接下来,使用以下脚本获取存储帐户的访问密钥:
$accesskey = (Get-AzStorageAccountKey -ResourceGroupName $resourcegroupname -Name $storage_accountname)[0].value
然后,使用 Update-AzSqlVM 命令启用并配置自动备份设置,以便在 Azure 存储帐户中存储备份。 在本示例中,备份设置为保留 10 天。 系统数据库备份已启用。 完整备份安排为每个星期六(每周)运行,时段从 20:00 开始,持续两小时。 日志备份计划为每隔 30 分钟运行。
Update-AzSqlVM -ResourceGroupName $resourcegroupname -Name $vmname -AutoBackupSettingEnable `
-AutoBackupSettingBackupScheduleType Manual `
-AutoBackupSettingFullBackupFrequency Weekly
-AutoBackupSettingDaysOfWeek Saturday `
-AutoBackupSettingFullBackupStartTime 20 `
-AutoBackupSettingFullBackupWindowHour 2 `
-AutoBackupSettingStorageAccessKey $accesskey `
-AutoBackupSettingStorageAccountUrl $storage_url `
-AutoBackupSettingRetentionPeriod 10 `
-AutoBackupSettingLogBackupFrequency 30 `
-AutoBackupSettingStorageContainerName $storage_container `
-AutoBackupSettingBackupSystemDb
可能需要花费几分钟来安装和配置 SQL Server IaaS 代理。
要启用加密,请修改上述脚本,使其将 -AutoBackupSettingEnableEncryption 参数连同 -AutoBackupSettingPassword 参数的密码(安全字符串)一起传递。 以下脚本启用上一示例中的自动备份设置,并添加加密。
$password = "r@ndom Va1ue"
$encryptionpassword = $password | ConvertTo-SecureString -AsPlainText -Force
Update-AzSqlVM -ResourceGroupName $resourcegroupname -Name $vmname -AutoBackupSettingEnable `
-AutoBackupSettingBackupScheduleType Manual `
-AutoBackupSettingFullBackupFrequency Weekly `
-AutoBackupSettingDaysOfWeek Saturday `
-AutoBackupSettingFullBackupStartTime 20 `
-AutoBackupSettingFullBackupWindowHour 2 `
-AutoBackupSettingStorageAccessKey $accesskey `
-AutoBackupSettingStorageAccountUrl $storage_url `
-AutoBackupSettingRetentionPeriod 10 `
-AutoBackupSettingLogBackupFrequency 30 `
-AutoBackupSettingEnableEncryption `
-AutoBackupSettingPassword $encryptionpassword `
-AutoBackupSettingStorageContainerName $storage_container `
-AutoBackupSettingBackupSystemDb
若要确认是否应用了这些设置,请 检查自动备份配置。
禁用自动备份
要禁用自动备份,请在 Update-AzSqlVM 命令中运行 -AutoBackupSettingEnable 参数设置为 $false 的脚本。 通过将值设置为 $false 来禁用该功能。 与安装一样,可能需要花费几分钟时间来禁用自动备份。
Update-AzSqlVM -ResourceGroupName $resourcegroupname -Name $vmname -AutoBackupSettingEnable:$false
示例脚本
以下脚本提供一组可自定义的变量,用来为 VM 启用和配置自动备份。 根据具体的情况,可能需要根据要求自定义该脚本。 例如,如果想要禁用系统数据库备份或启用加密,则必须更改该脚本。
$vmname = "yourvmname"
$resourcegroupname = "yourresourcegroupname"
$region = "Azure region name such as EASTUS2"
$storage_accountname = "yourstorageaccount"
$storage_url = "https://yourstorageaccount.blob.core.windows.net/"
$retentionperiod = 10
$backupscheduletype = "Manual"
$fullbackupfrequency = "Weekly"
$fullbackupdayofweek = "Saturday"
$fullbackupstarthour = "20"
$fullbackupwindow = "2"
$logbackupfrequency = "30"
# ResourceGroupName is the resource group which is hosting the VM where you are deploying the SQL Server IaaS Extension
Set-AzVMSqlServerExtension -VMName $vmname `
-ResourceGroupName $resourcegroupname -Name "SQLIaasExtension" `
-Version "2.0" -Location $region
# Creates/use a storage account to store the backups
$storage = Get-AzStorageAccount -ResourceGroupName $resourcegroupname `
-Name $storage_accountname -ErrorAction SilentlyContinue
If (-Not $storage)
{ $storage = New-AzStorageAccount -ResourceGroupName $resourcegroupname `
-Name $storage_accountname -SkuName Standard_GRS -Location $region }
# Creates/uses a custom storage account container
$storage_container = "yourbackupcontainer"
if (!(Get-AzStorageAccount -StorageAccountName $storage_accountname -ResourceGroupName $resourcegroupname | Get-AzStorageContainer | Where-Object { $_.Name -eq $storage_container })){ `
New-AzStorageContainer -Name $storage_container -Context $storage.Context `
} `
else `
{ `
Write-Warning "Container $storage_container already exists." `
}
# Get storage account access key
$accesskey = (Get-AzStorageAccountKey -ResourceGroupName $resourcegroupname -Name $storage_accountname)[0].value
# Configure Automated Backup settings
Update-AzSqlVM -ResourceGroupName $resourcegroupname -Name $vmname -AutoBackupSettingEnable `
-AutoBackupSettingBackupScheduleType $backupscheduletype `
-AutoBackupSettingFullBackupFrequency $fullbackupfrequency `
-AutoBackupSettingDaysOfWeek $fullbackupdayofweek `
-AutoBackupSettingFullBackupStartTime $fullbackupstarthour `
-AutoBackupSettingFullBackupWindowHour $fullbackupwindow `
-AutoBackupSettingStorageAccessKey $accesskey `
-AutoBackupSettingStorageAccountUrl $storage_url `
-AutoBackupSettingRetentionPeriod $retentionperiod `
-AutoBackupSettingLogBackupFrequency $logbackupfrequency `
-AutoBackupSettingStorageContainerName $storage_container `
-AutoBackupSettingBackupSystemDb
使用加密证书进行备份
如果决定加密备份,则将生成加密证书并将其保存在与备份相同的存储帐户中。 在此应用场景中,还需要输入密码,该密码将用于保护用于加密和解密备份的加密证书。 这样,你就无需担心此功能的配置之外的备份问题,还可确保可以信任备份是安全的。
启用备份加密后,强烈建议确定是否已成功创建并上传加密证书,以确保数据库的可还原性。 为此,可以立即创建一个数据库,并检查加密证书和数据是否已正确备份到新创建的容器。 这将表明所有配置都是正确的,没有发生异常。
如果证书由于某种原因未能上传,则可以使用证书管理器导出证书并保存它。 但是,你不希望将其保存在同一虚拟机上,因为这不会确保你在虚拟机关闭时有权访问证书。 若要了解在更改或创建自动备份配置后证书是否已正确备份,可以检查虚拟机中的事件日志,如果失败,则会看到以下错误消息:
如果证书备份正确,则将在事件日志中看到此消息:
作为通用实践,建议不时检查备份的运行状况。 为了能够还原备份,应执行下列操作:
确认加密证书已备份,并且你记住了密码。 如果不这样做,则将无法解密和还原备份。 如果由于某种原因,证书没有正确备份,则可以通过执行以下 T-SQL 查询来手动完成此操作:
BACKUP MASTER KEY TO FILE = <file_path> ENCRYPTION BY PASSWORD = <password> BACKUP CERTIFICATE [AutoBackup_Certificate] TO FILE = <file_path> WITH PRIVATE KEY (FILE = <file_path>, ENCRYPTION BY PASSWORD = <password>)
确认备份文件已上传并且至少包含 1 个完整备份。 由于发生错误,在删除虚拟机之前或者在虚拟机损坏的情况下,应确保始终至少有一个完整备份,这样你就知道自己仍然可以访问数据。 在删除虚拟机的数据磁盘之前,应确保存储中的备份是安全的且可恢复的。
监视
可通过两种主要方式监视 SQL Server 2016 及更高版本上的自动备份。 由于自动备份使用 SQL Server 托管备份功能,同样的监视方法对两者均适用。
首先,可通过调用 msdb.managed_backup.sp_get_backup_diagnostics 轮询状态。 或查询 msdb.managed_backup.fn_get_health_status 表值函数。
另一种方式是利用内置的数据库邮件功能进行通知。
- 调用 msdb.managed_backup.sp_set_parameter 存储过程,向 SSMBackup2WANotificationEmailIds 参数分配电子邮件地址。
- 启用 SendGrid,从 Azure VM 发送电子邮件。
- 使用 SMTP 服务器和用户名配置数据库邮件。 可在 SQL Server Management Studio 中或使用 Transact-SQL 命令配置数据库邮件。 有关详细信息,请参阅数据库邮件。
- 配置 SQL Server 代理以使用数据库邮件。
- 验证是否通过本地 VM 防火墙和适用于 VM 的网络安全组允许该 SMTP 端口。
已知问题
使用自动备份功能时,请考虑这些已知问题。
无法在 Azure 门户中启用自动备份
下表列出了在从 Azure 门户启用自动备份时遇到问题时可能的解决方案:
症状 | 解决方案 |
---|---|
如果 IaaS 扩展处于失败状态,则启用自动备份将失败 | 如果 SQL IaaS 代理扩展处于失败状态,请进行修复。 |
如果数据库超过一百个,则启用自动备份会失败 | 这是 SQL IaaS 代理扩展的已知限制。 若要解决此问题,可以直接启用托管备份,而不是使用 SQL IaaS 代理扩展来配置自动备份。 |
由于元数据问题,启用自动备份失败 | 停止 SQL IaaS 代理服务。 运行 T-SQL 命令:use msdb exec autoadmin_metadata_delete 。 启动 SQL IaaS 代理服务,并尝试从 Azure 门户重新启用自动备份。 |
为 FCI 启用自动备份 | 不支持使用专用终结点的备份。 使用完整存储帐户 URI 进行备份。 |
使用自动备份来备份多个 SQL 实例 | 自动备份目前仅支持一个 SQL Server 实例。 如果有多个命名实例和默认实例,则自动备份适用于默认实例。 如果有多个命名实例且没有默认实例,则启用自动备份将失败。 |
由于帐户和权限,无法启用自动备份 | 检查下列项目: - SQL Server 代理正在运行。 - NT Service\SqlIaaSExtensionQuery 帐户对 SQL Server 中的自动备份功能以及 Azure 门户中的 SQL 虚拟机资源具有适当的权限。 - SA 帐户尚未重命名,但禁用该帐户是可以接受的。 |
SQL 2016 + 自动备份失败 | 在存储帐户上启用“允许 Blob 公共访问”。 这为已知问题提供了临时解决方法。 |
自动或托管备份的常见问题
下表列出了使用自动备份时可能出现的错误和解决方案:
症状 | 解决方案 |
---|---|
由于连接到存储帐户/超时错误,自动/托管备份失败 | 检查虚拟网络的网络安全组 (NSG),并且 Windows 防火墙未阻止来自虚拟机 (VM) 端口 443 上的存储帐户的出站连接。 |
由于内存/IO 压力,自动/托管备份失败 | 如果超出 IO/VM 限制,请查看是否可增加最大服务器内存并/或重设磁盘/VM 的大小。 如果使用可用性组,请将备份分流到次要副本。 |
服务器重命名后自动备份失败 | 如果已重命名计算机主机名,则还需要在 SQL Server 内重命名主机名。 |
错误:由于内部错误,操作失败。 参数不得为空字符串。\r\n参数名称:sas Token 请稍后重试 | 这可能是由于 SQL Server 代理服务没有正确的模拟权限所致。 更改 SQL Server 代理服务以使用不同的帐户来解决此问题。 |
错误:到 Microsoft Azure 的 SQL Server 托管备份无法为 SQLServer 实例配置默认备份设置,因为容器 URL 无效。 也可能是你的 SAS 凭据无效 | 如果有大量数据库,则可能会出现此错误。 使用托管备份而不是自动备份。 |
VM 重启后,自动备份作业失败 | 检查 SQL 代理服务是否已启动且正在运行。 |
托管备份间歇性失败/错误:执行超时已过期 | 这是适用于 SQL Server 2019 和 [KB4040376] SQL Server 2014-2017 的 CU18 中修复的已知问题。 |
错误:远程服务器返回错误:(403) 已禁止 | 修复 SQL IaaS 代理扩展。 |
错误 3202:存储帐户上的写入失败 13(数据无效) | 请移除存储容器上的不可变 Blob 策略,并确保存储帐户至少使用 TLS 1.0。 |
错误 3063:写入备份块 blob 设备。 设备已达到允许的块限制。 | 如果从已将 Readable 配置设置为 NO 的辅助 Always On 可用性组副本运行自动备份,则可能会发生这种情况。 要在辅助副本上成功自动备份,该副本必须可读。 |
无法计划特定日期的备份 | 如果使用 SQL Server 2014 的自动备份,则预期会出现这种情况。 可以从 SQL Server 2016 开始配置备份计划。 |
自动备份或托管备份禁用失败
下表列出了在从 Azure 门户禁用自动备份时遇到问题时可能的解决方案:
症状 | 解决方案 |
---|---|
如果 IaaS 扩展处于失败状态,则禁用自动备份将失败 | 如果 SQL IaaS 代理扩展处于失败状态,请进行修复。 |
由于元数据问题,禁用自动备份失败 | 停止 SQL IaaS 代理服务。 运行 T-SQL 命令:use msdb exec autoadmin_metadata_delete 。 启动 SQL IaaS 代理服务,并尝试从 Azure 门户禁用自动备份。 |
由于帐户和权限,无法禁用自动备份 | 检查下列项目: - SQL Server 代理正在运行。 - NT Service\SqlIaaSExtensionQuery 帐户对 SQL Server 中的自动备份功能以及 Azure 门户中的 SQL 虚拟机资源具有适当的权限。 - SA 帐户尚未重命名,但禁用该帐户是可以接受的。 |
我想要了解哪些服务/应用程序正在执行 SQL Server 备份
- 在 SQL Server Management Studio (SSMS) 对象资源管理器中,右键单击数据库 > 选择“报表”>“标准报表”>“备份和还原事件”。 在报表中,可展开“成功的备份操作”部分,查看备份历史记录。
- 如果在 Azure 或虚拟设备上看到多个备份,请检查你是在使用 Azure 备份来备份单个 SQL 数据库,还是向使用
NT Authority/SYSTEM
帐户的虚拟设备创建虚拟机快照。 否则,检查 Windows 服务控制台 (services.msc),以识别可能正在执行备份的任何第三方应用程序。
后续步骤
自动备份会在 Azure VM 上配置托管备份。 因此,请务必查看有关托管备份的文档,了解其行为和影响。
可以在以下文章中找到针对 Azure VM 上 SQL Server 的其他备份和还原指导:Azure 虚拟机上的 SQL Server 的备份和还原。
有关其他可用自动化任务的信息,请参阅 SQL Server IaaS 代理扩展。
有关在 Azure VM 上运行 SQL Server 的详细信息,请参阅 Azure 虚拟机上的 SQL Server 概述。