Sintomas
Considere o seguinte cenário:
-
Você usa o Microsoft SQL Server 2012 ou o SQL Server 2014.
-
Você tem um banco de dados com o agente de serviços habilitado na réplica primária.
-
Você faz o backup do banco de dados no servidor primário que tem o Service Broker habilitado e o restaura no servidor secundário.
-
Como parte da definição do grupo de disponibilidade entre os servidores primário e secundário, você tenta ingressar no banco de dados no grupo de disponibilidade usando o assistente de novo grupo de disponibilidade ou o comando: ALTER DATABASE <dbname> definir o grupo de disponibilidade HADR = <agname>
Nesse cenário, o erro a seguir é registrado no log de erros do SQL Server:
{Erro: 3449, severidade: 21, estado: 1. o SQL Server deve ser desligado para recuperar um banco de dados (ID de banco de dados 1). O banco de dados é um banco de dados de usuário que não pode ser fechado ou um banco de dados do sistema. Reinicie o SQL Server. Se o banco de dados não for recuperado após a interrupção de outro rastreamento de inicialização, reparo ou restoreSQL devido ao desligamento do servidor. ID de rastreamento = ' 1 '. Esta é uma mensagem informativa apenas; nenhuma ação do usuário é necessária.}
Causa
O problema ocorre porque, se um banco de dados habilitado para o agente de serviços tiver sido restaurado e restaurado para o servidor secundário, o agente de serviço no banco de dados restaurado não está habilitado. O banco de dados ainda mantém uma ID do agente de serviços internamente. Quando você adiciona o banco de dados restaurado ao servidor secundário ao grupo de disponibilidade, o agente de serviço é habilitado. O mesmo GUID no banco de dados de disponibilidade é detectado, e o seguinte erro é gerado (silencioso): 9772 "o Service Broker no banco de dados"<dbname>"não pode ser habilitado porque já existe um agente de serviços habilitado com a mesma ID". Isso resulta em erro 3449 porque o banco de dados está participando do grupo de disponibilidade e faz com que o SQL Server seja desligado inesperadamente.
Resolução
O problema foi corrigido primeiro na atualização cumulativa a seguir do SQL Server.
Atualização cumulativa 1 para SQL Server 2014 /en-us/help/2931693
Atualização cumulativa 9 para SQL Server 2012 SP1 /en-us/help/2931078
Cada nova atualização cumulativa do SQL Server contém todos os hotfixes e todas as correções de segurança incluídas na atualização cumulativa anterior. Confira as atualizações cumulativas mais recentes do SQL Server:
Status
A Microsoft confirmou que este é um problema nos produtos Microsoft listados na seção "Aplicável a".