Sintomas
Considere o seguinte cenário:
-
Tem um procedimento armazenado que contém um procedimento de criança armazenado no Microsoft SQL Server 2012.
-
O procedimento de criança armazenado utiliza uma tabela como parâmetro.
-
Cria-se uma tabela temporária e passa-se para o procedimento armazenado como parâmetro.
-
O procedimento armazenado da criança faz algumas consultas contra a tabela temporária utilizando cursores.
Neste cenário, ocorre uma fuga de memória que degrada o desempenho do SQL Server 2012.
Resolução
Informação de atualização cumulativa
Atualização Cumulativa 3 para SQL Server 2012 Service Pack 1 (SP1)
A correção para este 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 para SQL Server 2012 SP 1, clique no seguinte número de artigo para ver o artigo na Base de Conhecimento da Microsoft:
2812412 Pacote de atualização cumulativo 3 para SQL Server 2012 Service Pack 1Nota Como as construções são cumulativas, cada novo lançamento de correção contém todos os hotfixes e todas as correções de segurança que foram incluídas com o anterior lançamento de correção SQL Server 2012 SP 1. Recomendamos que considere aplicar o mais recente lançamento de correção que contém este hotfix. Para mais informações, clique no número de artigo que se segue para ver o artigo na Base de Dados de Conhecimento Microsoft:
2772858 O SQL Server 2012 constrói que foram lançados após o lançamento do SQL Server 2012 Service Pack 1
Estado
A Microsoft confirmou que este problema ocorre nos produtos da Microsoft listados na secção "Aplica-se a".
Mais Informações
A tabela a seguir fornece mais informações sobre os produtos ou ferramentas que verificam automaticamente a condição descrita na secção "Sintomas" no seu caso de SQL Server e nas versões do SQL Server contra as quais a regra é avaliada:
Software de regras |
Título de regra |
Descrição da regra |
Versões de produtos contra as quais a regra é avaliada |
---|---|---|---|
Conselheiro do Centro do Sistema |
SqL Server Memory Leak quando as consultas são executadas contra uma tabela temporária num procedimento armazenado aninhado no SQL Server 2012 |
Neste aviso de exemplo do SQL Server detetou a presença de um servidor SQL construído inferior à construção fixa para um problema de Fuga de Memória. Isto pode acontecer quando se tem um procedimento armazenado que contém um procedimento armazenado para crianças, que utiliza tabelas temporárias que utilizam ainda mais cursores. Podem notar MEMORYCLERK_SQLOPTIMIZER de sys.dm_os_memory_clerks e MEMOBJ_EXECCOMPILETEMP de sys.dm_os_memory_objects a ir muito alto. Consulte o artigo do KB para mais detalhes. |
SQL Server 2012 |