Um de nossos trabalhos de replicação está falhando na etapa 3, que executa sp_MSdetect_nonlogged_shutdown , retorna uma 'String ou dados binários seriam truncados' . O que, obviamente, nos levou ao caminho de tentar encontrar um problema nos bancos de dados. No entanto, comparamos os dois bancos de dados e eles são idênticos. Pelo que posso dizer, o erro é na verdade um bug em sp_MSdetect_nonlogged_shutdown .
Eventualmente, verifiquei o trabalho novamente e a etapa 2 também estava falhando e lançando um minidespejo. Quando olhamos para o dump, ele diz:
o encadeamento tentou ler ou gravar em um endereço virtual para o qual não tem o acesso apropriado
A ID que executa o trabalho é uma ID SQL que é sysadmin, a etapa (2) está sendo executada na conta de serviço do agente. A conta de serviço tem acesso ao diretório de instantâneos. Temos vários outros trabalhos de replicação usando a mesma configuração de segurança que estão funcionando bem.
Versão SQL:
Microsoft SQL Server 2016 (SP2-GDR) (KB4532097) - 13.0.5102.14 (X64) 31 de dezembro de 2019 22:39:35 Copyright (c) Microsoft Corporation Enterprise Edition: licenciamento baseado em núcleo (64 bits) no Windows Server 2016 Standard 10.0 (Build 14393: ) (Hipervisor)
Alguém tem alguma idéia de onde posso encontrar o erro de permissões? Ou passos que posso usar para começar a reduzi-lo?
Enquanto a MS lança um patch (não tenho certeza se o fará), esta é uma solução rápida:
Obtenha e salve o código-fonte deste procedimento
[distribution].[sys].[sp_MSdetect_nonlogged_shutdown]
Edite a fonte e localize a variável @message, altere seu comprimento para 4000. Em seguida, localize a mensagem da coluna na tabela temporária #JobHistory e faça o mesmo
Inicie o SQL Server no modo Único do CMD no modo Administrativo
path_to_binary\sqlservr.exe -m"SQLCMD"
Abra outra janela do console e inicie o sqlcmd para se conectar à instância
sqlcmd -S . -U sa -P
Coloque o catálogo em leitura/gravação
USE mssqlsystemresource
GO
alter database mssqlsystemresource set read_write
GO
Cole o código modificado.
Restaurar o catálogo para o modo read_only
alter database mssqlsystemresource set read_only
GO
Desligar a instância de modo único
SHUTDOWN
GO
Inicie a instância usando o console de serviço normalmente