Sintomas
Considere o seguinte cenário:
-
Você tem um procedimento armazenado que contém um procedimento armazenado filho no Microsoft SQL Server 2012.
-
O procedimento armazenado filho usa uma tabela como parâmetro.
-
Crie uma tabela temporária e, em seguida, passe-a para o procedimento armazenado filho como o parâmetro.
-
O procedimento armazenado filho executa algumas consultas na tabela temporária usando cursores.
Nesse cenário, ocorre um vazamento de memória que prejudica o desempenho do SQL Server 2012.
Resolução
Informações sobre a atualização cumulativa
Atualização cumulativa 3 para SQL Server 2012 Service Pack 1 (SP1)
A correção para esse problema foi lançada pela primeira vez na atualização cumulativa 3. Para obter mais informações sobre como obter este pacote de atualização cumulativa do SQL Server 2012 SP 1, clique no número abaixo para ler o artigo na base de dados de conhecimento da Microsoft:
2812412 Pacote de atualizações cumulativas 3 para SQL Server 2012 Service Pack 1Observação Como as compilações são cumulativas, cada nova versão de correção contém todos os hotfixes e todas as correções de segurança incluídas na versão anterior do SQL Server 2012 SP 1. Recomendamos que você considere a aplicação do lançamento de correção mais recente que contém esse hotfix. Para obter mais informações, clique no número abaixo para ler os artigos na Base de Dados de Conhecimento Microsoft:
2772858 As compilações do SQL Server 2012 lançadas após o lançamento do SQL Server 2012 Service Pack 1
Status
A Microsoft confirmou que este é um problema nos produtos Microsoft listados na seção "Aplicável a".
Informações adicionais
A tabela a seguir fornece mais informações sobre os produtos ou ferramentas que verificam automaticamente a condição que está descrita na seção "sintomas" na instância do SQL Server e nas versões do SQL Server em relação à qual a regra é avaliada:
Software de regra |
Título da regra |
Descrição da regra |
Versões do produto com base na qual a regra é avaliada |
---|---|---|---|
System Center Advisor |
Perda de memória do SQL Server quando as consultas são executadas em uma tabela temporária em um procedimento armazenado aninhado no SQL Server 2012 |
Neste supervisor de instância do SQL Server, detectou a presença de uma compilação do SQL Server inferior à compilação corrigida para um problema de perda de memória. Isso pode acontecer quando você tem um procedimento armazenado que contém um procedimento armazenado filho, que usa tabelas temporárias que mais usam cursores. Você pode observar MEMORYCLERK_SQLOPTIMIZER de sys.dm_os_memory_clerks e MEMOBJ_EXECCOMPILETEMP sys.dm_os_memory_objects está muito alta. Para obter mais detalhes, consulte o artigo da base de dados de conhecimento. |
SQL Server 2012 |