Em um dos sites de nossos clientes, implementei uma solução de alta disponibilidade (HA). No entanto, durante o processo de backup, encontrei um problema relacionado à configuração do ambiente de backup. Configuramos o ambiente de backup usando o script Maintenance Solution de Ola Hallengren. O ambiente incluía um nome de host do Windows Server e @@serverproperty que eram diferentes, o que fez com que o processo de backup fosse interrompido com esse erro
(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.
Para resolver esse problema, comentei o script T-SQL mostrado abaixo:
--// 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
Depois de comentar esse script, o processo de backup foi retomado normalmente e os backups completos e diferenciais foram feitos. No entanto, ao tentar fazer um backup de log transacional na réplica primária, o log de transação não foi despejado no destino.
Observe que todos esses backups são executados na relíquia Primária com preferências de backup para Primária
Eu apreciaria se você pudesse compartilhar seus pensamentos e ideias sobre como resolver esse problema. Obrigado.
Kedar.
Em primeiro lugar, para corrigir a discrepância entre
@@SERVERNAME
e suaSERVERPROPERTY
contraparte, execute o seguinte script:https://github.com/MadeiraData/MadeiraToolbox/blob/master/Utility%20Scripts/Fix_ServerName_To_MachineName.sql
Você precisará reiniciar o serviço do SQL Server posteriormente para aplicar as alterações.
Em segundo lugar, em relação às preferências de backup, lembre-se de que a solução de manutenção de Ola Hallengren leva em consideração as preferências de backup de réplica do AG ao escolher se deseja executar um backup ou não. No entanto, você também pode usar o parâmetro @OverrideBackupPreference para substituí-lo, especificando
@OverrideBackupPreference='Y'
. Isso funciona apenas para backups somente cópia e backups regulares de log de transações. No entanto, eu recomendo fortemente NÃO fazer isso. Em vez disso, você deve configurar corretamente as preferências de backup do seu Grupo de Disponibilidade.Para saber como configurar as preferências de backup para seu grupo de disponibilidade, consulte o seguinte:
https://learn.microsoft.com/en-us/sql/database-engine/availability-groups/windows/availability-group-properties-new-availability-group-backup-preferences-page
Resumidamente:
Usando o SQL Server Management Studio para exibir e alterar as propriedades de um grupo de disponibilidade:
Onde devem ocorrer os backups?
Prefiro Secundário
Especifica que os backups devem ocorrer em uma réplica secundária, exceto quando a réplica primária é a única réplica online. Nesse caso, o backup deve ocorrer na réplica primária. Esta é a opção padrão.
Secundário apenas
Especifica que os backups nunca devem ser executados na réplica primária. Se a réplica primária for a única réplica online, o backup não deverá ocorrer.
primário
Especifica que os backups sempre devem ocorrer na réplica primária. Essa opção é útil se você precisar de recursos de backup, como criar backups diferenciais, que não são suportados quando o backup é executado em uma réplica secundária.
Qualquer réplica
Especifica que você prefere que as tarefas de backup ignorem a função das réplicas de disponibilidade ao escolher a réplica para executar backups. Observe que as tarefas de backup podem avaliar outros fatores, como prioridade de backup de cada réplica de disponibilidade em combinação com seu estado operacional e estado conectado.
Prioridades de backup de réplica
Essa grade exibe a prioridade de backup atual de cada instância do servidor que hospeda uma réplica para o grupo de disponibilidade. Use esta grade para alterar a prioridade de backup de uma ou mais réplicas de disponibilidade.
instância do servidor
O nome da instância do SQL Server que hospeda a réplica de disponibilidade.
Prioridade de backup (mais baixa = 1, mais alta = 100)
Especifica sua prioridade para realizar backups nesta réplica em relação às outras réplicas no mesmo grupo de disponibilidade. O valor é um número inteiro no intervalo de 0 a 100. 1 indica a prioridade mais baixa e 100 indica a prioridade mais alta. Se Prioridade de backup = 1, a réplica de disponibilidade seria escolhida para executar backups apenas se nenhuma réplica de disponibilidade de prioridade mais alta estivesse disponível no momento.
Excluir réplica
Selecione se você nunca deseja que esta réplica de disponibilidade seja escolhida para realizar backups. Isso é útil, por exemplo, para uma réplica de disponibilidade remota para a qual você nunca deseja que os backups falhem.
Fontes: