KB4051359 - CORREÇÃO: SQL Server fica sem memória quando parâmetros com valor de tabela são capturados em sessões de Eventos Estendidos no SQL Server 2016, mesmo que a instrução de coleta ou o fluxo de dados não esteja habilitado

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

Sintomas

Suponha que você crie uma sessão de Eventos Estendidos ou um Rastreamento do SQL Profiler que capture o evento rpc_starting ou rpc_completed no Microsoft SQL Server 2016 e a instrução de coleta ou fluxo de dados não esteja habilitada (você não definiu o parâmetro collect_statement ou collect_data_stream para a sessão Xevents ou o parâmetro Dadosde texto ou dados binários para o SQL Profiler). Se a atividade de SQL Server que envolve parâmetros com valor de tabela (TVPs) for capturada durante a sessão, o uso de memória de SQL Server pode crescer muito mais do que o necessário. Isso pode causar lentidão severa e, em casos extremos, esgotar SQL Server memória, e você recebe a seguinte mensagem de erro grave 701 para operações em andamento:

Nota

There is insufficient system memory in resource pool 'default' to run this query

Observação: Se você usar DBCC MEMORYSTATUS ou consulta sys.dm_os_memory_clerks, você pode observar que o funcionário de memória OBJECTSTORE_LBSS mostra grande consumo de memória.

Resolução

O problema em que uma sessão de eventos estendidos ou um rastreamento do profiler que não está configurado para coletar instrução ou fluxo de dados ainda requer buffers de memória grandes porque o material TVP é abordado por essa correção.

Observação Se a sessão de eventos estendidos ou o rastreamento do SQL Profiler estiverem configurados para coletar instrução ou fluxo binário/de dados e a atividade de SQL Server envolvida TVPs for capturada durante essa sessão, o uso de memória do SQL Server ainda pode aumentar mesmo com a correção atual aplicada, pois neste caso o consumo de memória é necessário para manipular o fluxo TVP dentro do rastreamento e é totalmente esperado.

Portanto, recomendamos que você não execute sessões permanentes ou rastreamentos com as combinações mencionadas anteriormente de eventos e campos de dados em instâncias SQL Server que provavelmente receberão atividades intensivas baseadas em TVP (em números ou tamanho).

Service Pack para SQL Server:

Esta correção está incluída no Service Pack 2 para SQL Server 2016.

Observação: Para outra correção que limita o número de linhas rastreadas num TVP, consulte o 4468102 da KB.

Acerca SQL Server compilações de 2016

Cada nova compilação para o SQL Server 2016 contém todos os hotfixes e correções de segurança que estavam na compilação anterior. Recomendamos que instale a compilação mais recente para o SQL Server 2016.

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.