在我们的一个客户站点,我实施了高可用性 (HA) 解决方案。但是在备份的过程中,遇到了一个备份环境配置的问题。我们使用 Ola Hallengren 的 Maintenance Solution 脚本配置了备份环境。环境包括不同的 Windows Server 主机名和@@serverproperty,这导致备份过程因此错误而停止
(Message 50000) Source: https://sqlhelps.com [SQLSTATE 01000] (Message 50000) [SQLSTATE 01000] (Message 50000) The @@SERVERNAME does not match SERVERPROPERTY('ServerName'). See https://docs.microsoft.com/en-us/sql/database-engine/install-windows/rename-a-computer-that-hosts-a-stand-alone-instance-of-sql-server. [SQLSTATE 42000] (Error 50000) [SQLSTATE 01000] (Message 50000) Date and time: 2023-04-23 12:46:07 [SQLSTATE 01000] (Message 50000) [SQLSTATE 01000] (Message 50000). The step failed.
为了解决这个问题,我注释掉了如下所示的 T-SQL 脚本:
--// Check @@SERVERNAME //-- --IF 'MainServer' <> CAST(SERVERPROPERTY('ServerName') AS nvarchar(max)) AND SERVERPROPERTY('IsHadrEnabled') = 1 --BEGIN -- INSERT INTO @Errors ([Message], Severity, [State]) -- SELECT 'The @@SERVERNAME does not match SERVERPROPERTY(''ServerName''). See ' + CASE WHEN SERVERPROPERTY('IsClustered') = 0 THEN 'https://docs.microsoft.com/en-us/sql/database-engine/install-windows/rename-a-computer-that-hosts-a-stand-alone-instance-of-sql-server' WHEN SERVERPROPERTY('IsClustered') = 1 THEN 'https://docs.microsoft.com/en-us/sql/sql-server/failover-clusters/install/rename-a-sql-server-failover-cluster-instance' END + '.', 16, 1 --END
注释掉这个脚本后,备份过程恢复正常,全量备份和差异备份都做了。但是,当尝试在主副本上进行事务日志备份时,事务日志没有转储到目的地。
请注意,所有这些备份都是在主副本上执行的,备份首选项为主副本
如果您能就如何解决此问题分享您的想法和想法,我将不胜感激。谢谢。
凯达。
首先,要修复
@@SERVERNAME
与其SERVERPROPERTY
对应物之间的差异,请运行以下脚本:https://github.com/MadeiraData/MadeiraToolbox/blob/master/Utility%20Scripts/Fix_ServerName_To_MachineName.sql
之后您将需要重新启动 SQL Server 服务以应用更改。
其次,关于备份偏好,请记住,Ola Hallengren 的维护解决方案在选择是否执行备份时会考虑 AG 副本备份偏好。但是,您也可以使用@OverrideBackupPreference参数来覆盖它,方法是指定
@OverrideBackupPreference='Y'
. 这仅适用于仅复制备份和常规事务日志备份。但是,我强烈建议不要这样做。相反,您应该正确配置可用性组的备份首选项。要了解如何为您的可用性组配置备份首选项,请参阅以下内容:
https://learn.microsoft.com/en-us/sql/database-engine/availability-groups/windows/availability-group-properties-new-availability-group-backup-preferences-page
简而言之:
使用 SQL Server Management Studio 查看和更改可用性组的属性:
应该在哪里备份?
喜欢中学
指定备份应发生在次要副本上,除非主要副本是唯一联机的副本。在这种情况下,备份应该发生在主副本上。这是默认选项。
仅次要
指定永远不应在主副本上执行备份。如果主副本是唯一在线的副本,则不应进行备份。
基本的
指定备份应始终发生在主副本上。如果您需要在辅助副本上运行备份时不支持的备份功能(例如创建差异备份),则此选项很有用。
任何副本
指定您希望备份作业在选择副本执行备份时忽略可用性副本的角色。注意备份作业可能会评估其他因素,例如每个可用性副本的备份优先级及其操作状态和连接状态。
副本备份优先级
此网格显示承载可用性组副本的每个服务器实例的当前备份优先级。使用此网格更改一个或多个可用性副本的备份优先级。
服务器实例
承载可用性副本的 SQL Server 实例的名称。
备份优先级(最低=1,最高=100)
指定相对于同一可用性组中的其他副本在此副本上执行备份的优先级。该值为 0..100 范围内的整数。1 表示最低优先级,100 表示最高优先级。如果 Backup Priority = 1,则仅当当前没有更高优先级的可用性副本可用时,才会选择可用性副本来执行备份。
排除副本
选择您是否不想选择此可用性副本来执行备份。例如,这对于您永远不希望备份故障转移到的远程可用性副本很有用。
资料来源: