KB3151176 - CORREÇÃO: o número de linhas é subestimado para um predicado de consulta que envolve uma função definida pelo utilizador escalar no SQL Server 2014

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

Sintomas

Tenha em conta o seguinte cenário:

  • Tem uma consulta que contém um predicado que envolve uma função parametrizada definida pelo utilizador escalar.
  • Existem várias combinações de valores de parâmetros de entrada que podem produzir o mesmo resultado por esta função definida pelo utilizador.
  • SQL Server utiliza o Novo Avaliador de Cardinalidade no qual o modo de compatibilidade da base de dados está definido como 120.

Neste cenário, quando executa a consulta, ocorre um fraco desempenho de consulta devido a um número de linhas incorretamente estimado para o predicado que envolve a função definida pelo utilizador no plano de consulta.

Resolução

Este problema foi corrigido pela primeira vez na seguinte atualização cumulativa para SQL Server:

Atualização Cumulativa 6 para SQL Server Service Pack 1 de 2014
        
Depois de instalar este pacote de atualização cumulativa, tem de ativar o sinalizador de rastreio 4199. Para tal, pode adicionar o parâmetro de arranque -T4199. Em alternativa, pode utilizar a instrução dbcc traceon(4199) para uma sessão específica.

Acerca das atualizações cumulativas do SQL Server

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

Atualização cumulativa mais recente para SQL Server 2014
      

Estado

A Microsoft confirmou que se trata de um problema nos produtos Microsoft listados na secção "Aplica-se a".

Referências

Saiba mais sobre a terminologia que a Microsoft utiliza para descrever as atualizações de software.