KB2809338 - CORREÇÃO: Alto valor de contador "log write waits" em uma instância do SQL Server 2012 ou SQL Server 2014

Aplica-se A
SQL Server 2014 Enterprise - duplicate (do not use) SQL Server 2014 Developer - duplicate (do not use) SQL Server 2014 Standard - duplicate (do not use) SQL Server 2014 Express - duplicate (do not use) SQL Server 2014 Web - duplicate (do not use) SQL Server 2012 Developer SQL Server 2012 Enterprise SQL Server 2012 Express SQL Server 2012 Standard SQL Server 2012 Web SQL Server 2012 Enterprise Core

Sintomas

        
Suponha que você habilite um recurso como Grupos de Disponibilidade AlwaysOn que usa pool de logs em uma instância do Microsoft SQL Server 2012 ou Microsoft SQL Server 2014. Nessa situação, o contador de espera de gravação de log para o buffer de log na instância SQL Server tem um valor alto. Você também notará valores altos para os tipos de espera CMEMTHREAD e WRITELOG em exibições de gerenciamento dinâmico (DMVs). Além disso, são gerados ficheiros de mini-dump.

Observação O pool de logs é um cache na memória do log de transações. Esse cache é usado, entre outras coisas: para otimizar a leitura do log durante a recuperação e as operações de reversão na replicação de transações e para o recurso Grupos de Disponibilidade AlwaysOn.

Causa

Esse problema ocorre porque o pool de logs usa um ponteiro global para um objeto de memória (PMO) para todos os bancos de dados.

Quando muitos threads tentam gravar logs usando o pool de logs, todos os threads precisam aguardar o ponteiro para um objeto de memória, resultando na contenção descrita na seção Sintomas.

Resolução

SQL Server 2014 Service Pack 1

Por predefinição, o Service Pack 1 para SQL Server 2014 inclui esta correção, pelo que não é necessário adicionar sinalizadores de rastreio para ativar a correção.

SQL Server 2014

O problema foi corrigido na versão RTM do SQL Server 2014, mas ainda precisa de ativar o sinalizador de rastreio T9024 e/ou 8048 para ativar a correção. Depois de habilitar esse sinalizador de rastreamento, a instância SQL Server particiona o ponteiro para um objeto de memória no nível do nó.

Notas

  • Se os problemas persistirem mesmo depois de habilitar o sinalizador de rastreamento T9024, você também poderá habilitar o sinalizador de rastreamento T8048, que particiona o ponteiro para o objeto de memória no nível da CPU.
  • SQL Server 2014 Service Pack 1 (SP1) inclui esta correção e não tem de ativar o sinalizador de rastreio.

          

SQL Server 2012

            
Tenha em atenção SQL Server o 2012 Service Pack 3 (SP3) inclui esta correção e não tem de ativar o sinalizador de rastreio.

Informações de atualização cumulativa

Atualização cumulativa 3 para SQL Server 2012 SP1

A correção para este problema foi lançada pela primeira vez na Atualização Cumulativa 3. Para obter mais informações sobre como obter esse pacote de atualização cumulativa para o SQL Server 2012 SP1, clique no número abaixo para ler o artigo na Base de dados de Conhecimento da Microsoft:

2812412 Pacote de atualizações cumulativas 3 para SQL Server 2012 Service Pack 1Nota Como as compilações são cumulativas, cada nova versão de correção contém todos os hotfixes e todas as correções de segurança que foram incluídas com o anterior SQL Server 2012 SP1 corrigir lançamento. Recomendamos que você considere aplicar o lançamento de correção mais recente que contém esse hotfix. Para mais informações, clique no número de artigo que se segue para ver o artigo na Base de Dados de Conhecimento Microsoft:

2772858 As compilações do SQL Server 2012 lançadas após o lançamento do SQL Server 2012 Service Pack 1Nota: depois de aplicar o hotfix, você precisa habilitar o sinalizador de rastreamento T9024 para ativar a correção. Depois de habilitar esse sinalizador de rastreamento, a instância SQL Server particiona o ponteiro para um objeto de memória no nível do nó.

Observação Se os problemas persistirem mesmo depois de habilitar o sinalizador de rastreamento T9024, você também poderá habilitar o sinalizador de rastreamento T8048, que particiona o ponteiro para o objeto de memória no nível da CPU.

Informações sobre o hotfix

Um hotfix suportado está disponível da Microsoft. No entanto, esse hotfix destina-se a corrigir apenas o problema descrito neste artigo. Aplique esse hotfix somente para sistemas que estão enfrentando esse problema específico.

Se o hotfix estiver disponível para download, há uma seção "Download de Hotfix Disponível" na parte superior deste artigo da Base de Dados de Conhecimento. Se esta seção não for exibida, envie uma solicitação para o Suporte e Atendimento ao Cliente Microsoft para obter o hotfix.

Observação Se ocorrerem problemas adicionais ou se for necessária alguma solução de problemas, talvez seja necessário criar uma solicitação de serviço separada. Os custos normais de suporte serão aplicados a questões de suporte adicionais e problemas que não se qualificam para esse hotfix específico. Para obter uma lista completa dos números de telefone do Suporte e Atendimento ao Cliente da Microsoft ou para criar um pedido de serviço separado, visite o seguinte site da Microsoft:

/contactus/?ws=support Observação O formulário "Download de Hotfix Disponível" exibe os idiomas para os quais o hotfix está disponível. Se não vir o seu idioma, é porque não está disponível uma correção para esse idioma.

Pré-requisitos para o SQL Server 2012

Para aplicar esse hotfix, você deve ter o SQL Server 2012 SP1 instalado no computador.

Requisito de reinício

Não é necessário reiniciar o computador depois de aplicar esse hotfix. SQL Server tem de ser reiniciado com o sinalizador de rastreio T9024. Para obter mais informações sobre como configurar SQL Server usando um sinalizador de rastreamento de inicialização, consulte Opções de inicialização do serviço Mecanismo de Banco de Dados.

Informações de ficheiro

A versão de hotfix global deste tem os atributos de arquivo (ou atributos de arquivo posteriores) listados na tabela a seguir. As datas e horas desses arquivos estão listadas em Tempo Universal Coordenado (UTC). Quando visualizar as informações dos ficheiros, estas serão convertidas na hora local. Para determinar a diferença entre a hora UTC e a hora local, utilize o separador Fuso Horário no item Data e Hora do Painel de Controlo.