Applies ToSQL Server 2012 Enterprise SQL Server 2012 Developer SQL Server 2012 Standard

Sintomas

Suponha que você tenha aplicado o Microsoft SQL Server 2012 Service Pack 2 (SP2) em seu computador. Você chama o cdc.fn_cdc_get_net_changes_<capture_instance> consulta de Data Capture (CDC) no sp_executesql procedimento armazenado, e ele pode vir de uma fonte de aplicativo, como o SQL Server Management Studio Server (SSMS), o próprio CDC ou os pacotes dos serviços de integração do SQL Server (SSIS). Nessa situação, você experimenta um desempenho ruim no SQL Server 2012.ObservaçãoA redução no desempenho pode ser grande. Por exemplo, uma consulta pode terminar em alguns segundos no SQL Server 2012 SP1. No entanto, a mesma consulta pode levar várias horas para ser executada no SQL Server 2012 SP2. Além disso, a atualização de estatísticas não ajuda com o problema.

Causa

Esse problema ocorre devido a um problema na estimativa de cardinalidade que afeta seriamente o desempenho do<de cdc.fn_cdc_get_net_changes_ capture_instance consulta> .

Cada nova atualização cumulativa do SQL Server contém todos os hotfixes e todas as correções de segurança incluídas na atualização cumulativa anterior. Confira as atualizações cumulativas mais recentes do SQL Server:

Solução alternativa

Para contornar esse problema, use a dica de consulta Option (RECOMPILE) em sua consulta. Caso a consulta seja disparada a partir de componentes CDC SSIS, a opção (RECOMPILE) pode ser forçada criando um guia de plano como no exemplo a seguir:Exec sp_create_plan_guide @name = N'CDC_Query1_PlanGuide', @stmt = N'select [__$start_lsn],[__$operation],[__$update_mask],[Column1],[Column2],[Column3] from [cdc].[fn_cdc_get_net_changes_dbo_Table1](CONVERT(binary(10), @cs, 1), CONVERT(binary(10), @ce, 1), @mode)',@type = N'SQL',@module_or_batch = NULL, @params = N'@ce nvarchar(22),@mode nvarchar(14),@cs nvarchar(22)', @hints = N'OPTION (RECOMPILE)'; ObservaçãoÉ necessário substituir a consulta de exemplo pela consulta com a qual você está enfrentando problemas. Ele pode ser capturado no rastreamento do gerador de perfil , portanto, nenhum caractere extra é adicionado acidentalmente. Além disso, certifique-se de que a consulta seleção seja colocada em uma única linha (por exemplo, ela não deve ter retorno de carro ou alimentação de linha) para que o guia de plano possa funcionar com êxito. Você também pode precisar usar DBCC FREEPROCCACHE para vazar o antigo plano do cache.

Status

A Microsoft confirmou que este é um problema nos produtos Microsoft listados na seção "Aplicável a".

Precisa de mais ajuda?

Quer mais opções

Explore os benefícios da assinatura, procure cursos de treinamento, saiba como proteger seu dispositivo e muito mais.

As comunidades ajudam você a fazer e responder perguntas, fazer comentários e ouvir especialistas com conhecimento avançado.