Bloqueio, condições de impasse ou outros problemas de SQL Server quando você se conecta ao banco de dados BizTalkMsgBoxDb em BizTalk Server

Este artigo fornece informações sobre como resolver problemas de SQL Server quando você se conecta ao BizTalkMsgBoxDb banco de dados no Microsoft BizTalk Server.

Versão original do produto: BizTalk Server
Número de KB original: 917845

Sintomas

Em BizTalk Server, você enfrenta bloqueio, condições de impasse ou outros problemas do Microsoft SQL Server ao tentar se conectar ao BizTalkMsgBoxDb banco de dados.

Motivo

Esse problema poderá ocorrer se uma ou mais das seguintes condições forem verdadeiras:

  • A opção Estatísticas de Create Automática está habilitada no BizTalkMsgBoxDb banco de dados.
  • A opção Estatísticas de Atualização Automática está habilitada no BizTalkMsgBoxDb banco de dados.
  • O grau máximo de opção de paralelismo é definido como um valor diferente de 1 para o BizTalkMsgBoxDb banco de dados ou a instância SQL que hospeda esse banco de dados.
  • Você desfragmenta ou recompila um índice no BizTalkMsgBoxDb banco de dados quando BizTalk Server está processando dados.

Resolução 1: desabilitar a opção Estatísticas de Create Automática e a opção Estatísticas de Atualização Automática

Para resolve esse problema, desabilite as opções Estatísticas de Create Automática e Estatísticas de Atualização Automática no BizTalkMsgBoxDb banco de dados no SQL Server.

Resolução 2: defina a opção grau máximo de paralelismo como 1

Para resolve esse problema, defina a opção grau máximo de paralelismo como 1 na configuração do BizTalkMsgBoxDb banco de dados ou na instância SQL que hospeda esse banco de dados.

Resolução 3: não recompilar um índice quando BizTalk Server estiver processando dados

Para resolve esse problema, não execute o bts_RebuildIndexes procedimento armazenado ou qualquer comando SQL que recompile um índice em um banco de dados BizTalk Server quando BizTalk Server estiver processando dados.

Observação

Não há suporte para desfragmentar um índice em um banco de dados BizTalk Server.

O procedimento armazenado bts_RebuildIndexes

O único método com suporte para recompilar um índice no BizTalkMsgBoxDb banco de dados é executar o bts_RebuildIndexes procedimento armazenado. Em BizTalk Server 2006 e versões posteriores, você pode executar o dtasp_RebuildIndexes procedimento armazenado para recompilar índices no BizTalkDTADb banco de dados.

A maioria dos índices BizTalk é baseada em GUID. Muitos testes mostraram que, desde que as tabelas não sejam examinadas, os índices baseados em GUID podem ter um desempenho melhor do que índices baseados em identidade para cargas de trabalho específicas do BizTalk. Isso pode causar fragmentação. No entanto, como os dados fluem dentro e fora das tabelas em um ritmo constante, a fragmentação pode não causar problemas. Se espera-se que muitos dados sejam compilados no BizTalkMsgBox banco de dados, você poderá recompilar periodicamente índices durante o tempo de inatividade agendado. As mesmas diretrizes se aplicam ao banco de dados de acompanhamento.

Você pode usar o DBCC DBREINDEX comando SQL para recompilar um índice nos outros bancos de dados BizTalk Server. Para obter um exemplo de como usar o DBCC DBREINDEX comando SQL, clique com o botão direito do mouse no bts_RebuildIndexes procedimento armazenado e clique em Propriedades.

A Microsoft só dá suporte à reconstrução de índices de banco de dados durante BizTalk Server tempo de inatividade. Você deve parar todas as instâncias de host e SQL Server Agent antes de recompilar um índice. Ao executar o bts_RebuildIndexes procedimento armazenado em BizTalk Server 2006 e versões posteriores, você poderá receber uma das seguintes mensagens de erro:

  • Mensagem de erro 1

    Msg 5239, Nível 16, Estado 1, Procedimento bts_RebuildIndexes, Linha 4 Não é possível processar a ID do objeto 674101442 (objeto 'TrackingData')
    Esse comando DBCC (verificador de consistência de banco de dados) não dá suporte a esse tipo de objeto.

  • Mensagem de erro 2

    Msg 5239, Nível 16, Estado 1, Procedimento bts_RebuildIndexes, Linha 4 Não é possível processar a ID do objeto 722101613 (objeto 'TrackingData') porque esse comando DBCC não dá suporte a objetos desse tipo.

Esse problema ocorre porque o TrackingData objeto é uma exibição em versões BizTalk Server 2006 e posteriores. Para resolve esse problema, faça o seguinte e execute o bts_RebuildIndexes procedimento armazenado:

  1. Comente a linha a seguir no bts_RebuildIndexes procedimento armazenado.

    DBCC DBREINDEX ('[dbo].[TrackingData]') WITH NO_INFOMSGS
    
  2. Adicione as linhas a seguir ao bts_RebuildIndexes procedimento armazenado.

    DBCC DBREINDEX ('[dbo].[TrackingData_0_0]') WITH NO_INFOMSGS
    DBCC DBREINDEX ('[dbo].[TrackingData_0_1]') WITH NO_INFOMSGS
    DBCC DBREINDEX ('[dbo].[TrackingData_0_2]') WITH NO_INFOMSGS
    DBCC DBREINDEX ('[dbo].[TrackingData_0_3]') WITH NO_INFOMSGS
    DBCC DBREINDEX ('[dbo].[TrackingData_1_0]') WITH NO_INFOMSGS
    DBCC DBREINDEX ('[dbo].[TrackingData_1_1]') WITH NO_INFOMSGS
    DBCC DBREINDEX ('[dbo].[TrackingData_1_2]') WITH NO_INFOMSGS
    DBCC DBREINDEX ('[dbo].[TrackingData_1_3]') WITH NO_INFOMSGS