Diminui o desempenho quando executa um SELECT... CONSULTA depois de actualizar para o SQL Server 2012 e posterior

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: 3144525
Sintomas
Depois de actualizar do Microsoft SQL Server 2008 R2 ou uma versão anterior para o SQL Server 2012 ou uma versão posterior, poderá notar queseleccionar... PARA as consultas que contêm funções definidas pelo utilizador demoram mais tempo a concretizar do que nas versões anteriores.
Causa
Este problema ocorre porque esse seleccionar... EM demonstrações que contêm funções definidas pelo utilizador (UDFs) são operações totalmente registadas e demorar mais tempo a concluir no SQL Server 2012 e versões posteriores.

Nota Seleccione qualquer ... PARA as instruções que contêm funções definidas pelo utilizador são operações registadas minimamente em versões anteriores (SQL Server 2008 R2 e anteriores). Esta alteração foi introduzida para se certificar da integridade dos dados, tal como a função definida pelo utilizador pode efectuar operações de leitura/escrita no mesmo objecto e pode causar danos nos dados se o registo mínimo é activado.
Como contornar
Se seleccionar as funções definidas pelo utilizador que são utilizadas no ... EM declaração de não efectuar qualquer operação de acesso de dados, pode especificar a cláusula SCHEMABINDING para as funções definidas pelo utilizador que irá definir a propriedade de UserDataAccess derivada para essas funções definidas pelo utilizador para 0. Após esta alteração, SELECT... EM demonstrações ser minimamente registadas. Para mais informações, consulte a amostra no blogue para obter um exemplo sobre como utilizar o SCHEMABINDING.

Nota Se a instrução referencia ainda pelo menos uma função definida pelo utilizador que tenha esta propriedade definida como 1, a operação totalmente é registada.
Mais Informação
O código de exemplo seguinte demonstra a diferença de comportamento entre o SQL Server 2008 R2 e SQL Server 2012 ou 2014:

create database DB1gouse DB1gocreate function dbo.MyTrim (@name as varchar(100))returns varchar (100)asbeginreturn (RTRIM(ltrim(@name)))endgocreate table dbo.tab_prod (c1 int, c2 varchar(10))godeclare @a int set @a = 1while @a <= 100000begin insert into tab_prodvalues (@a , '  test ')set @a = @a + 1endbegin transelect  *,  dbo.mytrim(c2) as trimc2 into tab_test from tab_prod

A tabela seguinte compara o tempo de CPU para uma operação em seleccionar no SQL Server 2008 R2 do SQL Server 2014:

VersãoTempo de execução (tempo da CPU)
SQL Server 2008 R2719 ms
SQL Server 20141360 ms

A tabela seguinte compara a utilização de registo da transacção para uma operação em seleccionar no SQL Server 2008 R2 do SQL Server 2014:

VersãoNome da base de dadosTamanho do registo (MB)O espaço de registo utilizado (%)Estado
SQL Server 2008 R2DS10.742187551.578950
SQL Server 2014DS132.1796938.44380
Nota importante Os resultados destas tabelas são apenas um exemplo da alteração de comportamento entre o SQL Server 2008 R2 e 2014 do SQL Server e muito específicos para o ambiente do laboratório que foi utilizado para este ensaio. A diferença de desempenho real no seu ambiente depende do hardware que a instância SQL está em execução no.
Nota Este é um artigo de “PUBLICAÇÃO RÁPIDA” criado directamente a partir da organização de suporte da Microsoft. As informações contidas neste artigo são fornecidas “tal como estão” em resposta a problemas recentes. Devido à urgência em disponibilizar este artigo, os materiais poderão incluir erros tipográficos e ser revistos em qualquer altura sem aviso prévio. Consulte os Termos de Utilização para outras considerações.

Aviso: Este artigo foi traduzido automaticamente

Propriedades

ID do Artigo: 3144525 - Última Revisão: 03/03/2016 22:37:00 - Revisão: 1.0

Microsoft SQL Server 2005 Developer Edition, Microsoft SQL Server 2005 Express Edition, Microsoft SQL Server 2005 Standard Edition, Microsoft SQL 2005 Server Workgroup, Microsoft SQL 2005 Server Enterprise, Microsoft SQL Server 2008 Developer, Microsoft SQL Server 2008 Enterprise, Microsoft SQL Server 2008 Express, Microsoft SQL Server 2008 Standard, Microsoft SQL Server 2008 Web, Microsoft SQL Server 2008 Workgroup, Microsoft SQL Server 2008 R2 Datacenter, Microsoft SQL Server 2008 R2 Developer, Microsoft SQL Server 2008 R2 Enterprise, Microsoft SQL Server 2008 R2 Express, Microsoft SQL Server 2008 R2 Standard, Microsoft SQL Server 2008 R2 Web, Microsoft SQL Server 2008 R2 Workgroup

  • kbsurveynew kbtshoot kbexpertiseadvanced kbmt KB3144525 KbMtpt
Comentários