KB4013128 - CORREÇÃO: desempenho reduzido e longas esperas por CLR_AUTO_EVENT e CMEMTHREAD quando SQLCLR UDT é usado como um parâmetro de procedimento armazenado para uma chamada SQL RPC

Aplica-se a
SQL Server 2012 Enterprise SQL Server 2012 Developer SQL Server 2012 Enterprise Core SQL Server 2012 Standard SQL Server 2016 Developer - duplicate (do not use) SQL Server 2016 Enterprise - duplicate (do not use) SQL Server 2016 Enterprise Core - duplicate (do not use) SQL Server 2016 Standard - duplicate (do not use) SQL Server 2014 Developer - duplicate (do not use) SQL Server 2014 Enterprise - duplicate (do not use) SQL Server 2014 Enterprise Core - duplicate (do not use) SQL Server 2014 Standard - duplicate (do not use)

Sintomas

Você usa o Microsoft SQL Server 2012, 2014 ou 2016 e cria um UDT (tipo definido pelo usuário) usando a integração do SQL CLR (Common Language Runtime) do SQL Server.

Se você usar o UDT como um parâmetro de procedimento armazenado, o parâmetro será passado para o servidor por meio do mecanismo RPC (chamada de procedimento remoto). Esse mecanismo tenta carregar internamente um assembly que hospeda o UDT na memória.

Nessa situação, você pode ter um desempenho reduzido para a execução do procedimento armazenado. Isso ocorre devido a uma ineficiência causada quando o RPC carrega e descarrega o assembly SQLCLR desnecessariamente.

Esse problema se manifesta como longos tempos de espera para os tipos CLR_AUTO_EVENT e CMEMTHREAD . Isso é especialmente verdadeiro se vários usuários simultâneos estiverem executando o mesmo procedimento armazenado.

Resolução

Informações do service pack do SQL Server

Essa atualização é corrigida nos seguintes service packs para o SQL Server:

Service Pack 2 para SQL Server 2016

Service Pack 3 para SQL Server 2014

Service Pack 4 para SQL Server 2012

Sobre service packs do SQL Server:

Os service packs são cumulativos. Cada novo service pack contém todas as correções dos service packs anteriores, juntamente com as novas correções. Nossa recomendação é aplicar o service pack mais recente e a atualização cumulativa mais recente para esse service pack. Não é necessário instalar um service pack anterior antes de instalar o service pack mais recente. Use a Tabela 1 do artigo a seguir para encontrar mais informações sobre o service pack mais recente e a atualização cumulativa mais recente.

Como determinar a versão, a edição e o nível de atualização do SQL Server e seus componentes

Status

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

Referências

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