CORREÇÃO: Desempenho lento quando um gatilho AFTER é executado em uma tabela particionada no SQL Server 2008 R2 ou no SQL Server 2012

Traduções de Artigos Traduções de Artigos
Artigo: 2606883 - Ver produtos para os quais este artigo se aplica.
Expandir tudo | Reduzir tudo

Nesta página

Sintomas

Considere os seguintes cenários:
  • Criar partições de uma tabela no Microsoft SQL Server 2008 R2 ou no Microsoft SQL Server 2012.
  • Criar um APÓS disparador para qualquer INSERIR ou EXCLUIR operação executada na tabela.
  • Executar uma INSERIR ou EXCLUIR operação na tabela.

Neste cenário, pode ocorrer desempenho lento. Além disso, muitas leituras lógicas podem ocorrer se você executar o Profiler SQL.

Causa

Esse problema ocorre pelos seguintes motivos:
  • O mecanismo de armazenamento mantém internamente uma cadeia única versão de cada instrução.
  • A execução da consulta procura partições da cadeia de versão inteiro para encontrar as linhas que são inseridas para uma das partições.

Resolução

Para resolver esse problema, aplique o seguinte hotfix e use o sinalizador de rastreamento-T2470

Informações da atualização cumulativa

SQL Server 2012 A correção para esse problema foi lançada primeiro na atualização cumulativa 1 para SQL Server 2012. Para obter mais informações sobre esse pacote de atualizações cumulativas, clique no número abaixo para ler o artigo na Base de dados de Conhecimento da Microsoft:
2679368 Pacote de atualização cumulativa 1 para SQL Server 2012
Observação Como as compilações são cumulativas, cada novo lançamento de correções contém todos os hotfixes e lançamento de corrigir todas as correções de segurança que foram incluídas com o anterior 2012 de SQL Server. A Microsoft recomenda que você considere a aplicação a versão mais recente de correção que contém esse hotfix. Para obter mais informações, clique no número abaixo para ler o artigo na Base de dados de Conhecimento da Microsoft:
2692828 2012 De SQL Server compilações lançadas após o lançamento do SQL Server 2012
Você deve aplicar um hotfix de SQL Server 2012 para uma instalação do SQL Server 2012.

SQL Server 2008 R2 Service Pack 1

Informações da atualização cumulativa

A correção para esse problema foi lançada primeiro na atualização cumulativa 3 para SQL Server 2008 R2 Service Pack 1. Para obter mais informações sobre como obter esse pacote de atualizações cumulativas, clique no número abaixo para ler o artigo na Base de dados de Conhecimento da Microsoft:
2591748 Pacote de atualização cumulativo 3 para SQL Server 2008 R2 Service Pack 1
Observação Como as compilações são cumulativas, cada novo lançamento de correções contém todos os hotfixes e todas as correções de segurança que foram incluídas com o anterior SQL Server 2008 R2 corrigir lançamento. Recomendamos que você considere a aplicação a versão mais recente de correção que contém esse hotfix. Para obter mais informações, clique no número abaixo para ler o artigo na Base de dados de Conhecimento da Microsoft:
2567616 SQL Server 2008 R2 compilações lançadas após o lançamento do SQL Server 2008 R2 Service Pack 1

Informações sobre hotfix

Um hotfix suportado está disponível no Microsoft. No entanto, esse hotfix destina-se a corrigir o problema descrito neste artigo. Aplica esse hotfix somente aos sistemas que apresentarem esse problema específico.

Se o hotfix está disponível para download, há uma seção "Download de Hotfix disponível" na parte superior deste artigo do Knowledge Base. Se esta seção não for exibido, envie uma solicitação para suporte e atendimento ao cliente Microsoft para obter o hotfix.

Observação Se ocorrerem problemas adicionais ou se qualquer solução de problemas é necessária, talvez você precise criar uma solicitação de serviço separada. Os custos de suporte normais se aplicarão a perguntas 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 de suporte e Atendimento Microsoft ou para criar uma solicitação de serviço separada, visite o seguinte site da Microsoft:
http://support.microsoft.com/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 você não vir seu idioma, é porque um hotfix não está disponível para esse idioma.

Pré-requisitos

Para aplicar esse hotfix, você deve ter Microsoft SQL Server 2008 R2 Service Pack 1 (SP1) instalado.

Requisito de reinicialização

Não é necessário reiniciar o computador após aplicar esse hotfix.

Informações de substituição do hotfix

Esse hotfix não substitui um hotfix lançado anteriormente.

Informações do arquivo

A versão global tem atributos de arquivo (ou atributos de arquivo posteriores) listados na tabela a seguir. As datas e horas desses arquivos estão listadas no tempo Universal Coordenado (UTC). Quando você exibir as informações do arquivo, ele é convertido para a hora local. Para encontrar a diferença entre o UTC e a hora local, use a Fuso horário Guia de Data e hora item no painel de controle.

Para todas as versões baseadas em x86 do SQL Server 2008 R2 SP1
Reduzir esta tabelaExpandir esta tabela
Nome de arquivoVersão do arquivoTamanho do arquivoDataTempoPlataforma
Sqlservr. exe2009.100.2776.043,053,92015-Set-201101: 47x86

Para todas as versões baseadas em x64 doSQL Server 2008 R2 SP1

Reduzir esta tabelaExpandir esta tabela
Nome de arquivoVersão do arquivoTamanho do arquivoDataTempoPlataforma
Sqlservr. exe2009.100.2776.062,176,60815-Set-201100: 57x64

Para todas as versõesbaseadas em IA-64 compatíveisSQL Server 2008 R2 SP1

Reduzir esta tabelaExpandir esta tabela
Nome de arquivoVersão do arquivoTamanho do arquivoDataTempoPlataforma
Sqlservr. exe2009.100.2776.0122,105,69615-Set-201100: 23IA-64


Como contornar

Para contornar esse problema, altere o disparador depois para um disparador Em vez de inserir ou um disparador INSTEAD OF DELETE .

Por exemplo, execute as seguintes instruções para criar um disparador depois :
CREATE TRIGGER TR_Test ON Test FOR INSERT AS BEGIN DECLARE @groupe INT SELECT TOP 1 @groupe=Groupe FROM INSERTED END GO
Nesse cenário, altere o disparador depoisem vez de inserir usando as instruções a seguir:
CREATE TRIGGER TR_Test ON Test INSTEAD OF INSERT AS BEGIN DECLARE @groupe INT SELECT TOP 1 @groupe=Groupe FROM INSERTED INSERT INTO Test (Groupe) SELECT @groupe FROM INSERTED END

Ponto Da Situação

A Microsoft confirmou que este é um problema nos produtos da Microsoft listados na seção "Aplica-se a".

Propriedades

Artigo: 2606883 - Última revisão: 16 de abril de 2012 - Revisão: 3.0
A informação contida neste artigo aplica-se a:
  • Microsoft SQL Server 2008 R2 Datacenter
  • Microsoft SQL Server 2008 R2 Developer
  • Microsoft SQL Server 2012 Developer
Palavras-chave: 
kbqfe kbhotfixserver kbfix kbexpertiseadvanced kbsurveynew kbautohotfix kbmt KB2606883 KbMtpt
Tradução automática
IMPORTANTE: Este artigo foi traduzido por um sistema de tradução automática (também designado por Machine translation ou MT), não tendo sido portanto revisto ou traduzido por humanos. A Microsoft tem artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais. O objectivo é simples: oferecer em Português a totalidade dos artigos existentes na base de dados do suporte. Sabemos no entanto que a tradução automática não é sempre perfeita. Esta pode conter erros de vocabulário, sintaxe ou gramática? erros semelhantes aos que um estrangeiro realiza ao falar em Português. A Microsoft não é responsável por incoerências, erros ou estragos realizados na sequência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza actualizações frequentes ao software de tradução automática (MT). Obrigado.
Clique aqui para ver a versão em Inglês deste artigo: 2606883

Submeter comentários

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com