Resolver a corrupção do banco de dados de modelo no SQLLocalDB

Este artigo descreve um problema conhecido no utilitário SQLLocalDB que pode impedir que o serviço ADSync seja iniciado devido a um banco de dados corrompido Model . Esse problema afeta principalmente Microsoft Entra Connect 2.x servidores que são executados em um LocalDB do Microsoft SQL Server 2019.

O problema é causado por um bug na lógica de backup SQL Server que cria um estado inconsistente na página inicial do banco de dados SQL ServerModel. Depois que ocorre um backup, o Model banco de dados é definido como FULL modo de recuperação (dbi_status == 0x40010000) e o dbi_dbbackupLSN (o (número de sequência de logs) para o backup do banco de dados é definido como um valor que aponta para um arquivo de log. No entanto, o modo de recuperação real que é regido pelo Master banco de dados é SIMPLE.

No SIMPLE modo de recuperação, os logs de banco de dados são truncados automaticamente. No FULL modo de recuperação, os logs são truncados somente após um backup. Quando SQLLocalDB é reiniciado depois que o arquivo de log é truncado, ele detecta um LSN de backup que é anterior ao arquivo de log mais antigo. Portanto, ele não iniciará o serviço.

Examine as diretrizes nas próximas seções para saber como fazer as seguintes tarefas:

  • Identifique corretamente se o serviço Microsoft Entra Connect (ADSync) não é iniciado por causa da corrupção do banco de Model dados.

  • Reduza o problema recuperando o Model banco de dados de um estado corrompido.

  • Aplique uma correção permanente para garantir que essa Model corrupção de banco de dados não ocorra novamente.

Sintomas

Você pode verificar se o problema se baseia nos seguintes eventos no servidor Microsoft Entra Connect:

  • Visualizador de Eventos: Application, EventID 528, Fonte: SQLLocalDB 15.0

    WaitForMultipleObjects
    575
    {Application Error}
    The application was unable to start correctly (0x%lx). Click OK to close the application.
    3714
    
  • Visualizador de Eventos: Aplicativo, EventIDs 2005 e 6226, Fonte: ADSync

    0x8023044a
    OriginalError=0x80004005 OLEDB Provider error(s):
    Description  = 'Login timeout expired'
    Failure Code = 0x80004005 
    
  • SQLLocalDB error.log arquivo no <caminho> do perfil de serviço do ADSync\AppData\Local\Microsoft\Microsoft SQL Server Local DB\Instances\ADSync2019

    <yyyy-MM-dd HH:mm:ss.##> spid14s     The resource database build version is 15.00.4138. This is an informational message only. No user action is required.
    <yyyy-MM-dd HH:mm:ss.##> spid8s      Starting up database 'msdb'.
    <yyyy-MM-dd HH:mm:ss.##> spid14s     Starting up database 'model'.
    <yyyy-MM-dd HH:mm:ss.##> spid14s     Error: 9003, Severity: 20, State: 1.
    <yyyy-MM-dd HH:mm:ss.##> spid14s     The log scan number (41:488:1) passed to log scan in database 'model' is not valid. This error may indicate data corruption or that the log file (.ldf) does not match the data file (.mdf). If this error occurred during replication, re-create the publication. Otherwise, restore from backup if the problem results in a failure during startup.
    <yyyy-MM-dd HH:mm:ss.##> spid14s     SQL Trace was stopped due to server shutdown. Trace ID = '1'. This is an informational message only; no user action is required.
    

Atenuação

Importante

Aplique somente as etapas de mitigação descritas aqui se todas essas condições ocorrerem:

  • A versão do Microsoft Entra Connect é 2.0.x.x.

  • Microsoft Entra Connect é instalado com o SQL LocalDB.

  • Todas as condições listadas em Sintomas estão presentes.

Para recuperar o Model banco de dados de um estado corrompido, siga estas etapas:

  1. Vá para um dos seguintes locais de perfil do Serviço ADSync, dependendo da conta de serviço que está em execução (como uma conta de domínio, conta de serviço virtual ou conta de serviço gerenciada):

    • C:\Usuários\<conta> de serviço\
    • C:\Users\ADSyncMSAxxxxx$\
    • C:\Windows\ServiceProfiles\ADSync\
  2. Abra o arquivo error.log da pasta de instância do ADSync2019 no seguinte caminho de diretório:

    <caminho> do perfil de serviço\AppData\Local\Microsoft\Microsoft SQL Server DB\Instances local\ADSync2019\

  3. Localize a seguinte entrada de erro no log para verificar se o Model banco de dados está corrompido:

    <yyyy-MM-dd HH:mm:ss.##> spid14s     Error: 9003, Severity: 20, State: 1.
    <yyyy-MM-dd HH:mm:ss.##> spid14s     The log scan number (41:488:1) passed to log scan in database 'model' is not valid. This error may indicate data corruption or that the log file (.ldf) does not match the data file (.mdf). If this error occurred during replication, re-create the publication. Otherwise, restore from backup if the problem results in a failure during startup.   
    
  4. Se houver erro "9003" nesta entrada, renomeie os arquivos model.mdf e modellog.ldf nesta pasta para old_model.mdf e old_modellog.ldf, respectivamente.

  5. Abra a pasta Modelos de SQL em C:\Arquivos do Programa\Microsoft SQL Server\150\LocalDB\Binn\Templates.

  6. Copie os arquivos model.mdf e modellog.ldf para a pasta instância ADSync2019 da etapa 2.

  7. Inicie o serviço ADSync.

Solução

A Microsoft introduziu uma correção para esse problema no Microsoft Entra Connect versão 2.1.1.0. Se o serviço de sincronização (ADSync) não puder ser iniciado, você precisará aplicar as etapas na seção Mitigação antes de poder atualizar Microsoft Entra Conectar.

Para evitar os problemas de corrupção no banco de dados SQLLocalDBModel, instale o build mais recente Microsoft Entra Connect, que está disponível no Microsoft Entra Connect: histórico de lançamento de versão.

Entre em contato conosco para obter ajuda

Se você tiver dúvidas ou precisar de ajuda, crie uma solicitação de suporte ou peça ajuda à comunidade de suporte do Azure. Você também pode enviar comentários sobre o produto para a comunidade de comentários do Azure.