Symptômes
Prenons l’exemple du scénario suivant :
-
Vous disposez d’une procédure stockée qui contient une procédure stockée enfant dans Microsoft SQL Server 2012.
-
La procédure stockée enfant utilise une table en tant que paramètre.
-
Vous créez une table temporaire, puis vous la passez à la procédure stockée enfant en tant que paramètre.
-
La procédure stockée enfant exécute des requêtes sur la table temporaire à l’aide de curseurs.
Dans ce scénario, une fuite de mémoire qui dégrade les performances de SQL Server 2012 se produit.
Résolution
Informations sur les mises à jour cumulatives
Mise à jour cumulative 3 pour SQL Server 2012 Service Pack 1 (SP1)
Le correctif de ce problème a été émis pour la première fois dans la mise à jour cumulative 3. Pour plus d’informations sur la façon d’obtenir ce package de mise à jour cumulative pour SQL Server 2012 SP 1, cliquez sur le numéro ci-dessous pour consulter l’article de la base de connaissances Microsoft :
2812412 Package de mise à jour cumulative 3 pour SQL Server 2012 Service Pack 1Remarque Dans la mesure où les builds sont cumulatives, chaque nouvelle version du correctif contient tous les correctifs et les correctifs de sécurité inclus dans l’ancienne version du correctif SQL Server 2012 SP1 SP1. Nous vous recommandons d’appliquer la version de correctif la plus récente qui contient ce correctif. Pour plus d'informations, cliquez sur le numéro ci-dessous pour afficher l'article correspondant dans la Base de connaissances Microsoft :
2772858 Builds SQL Server 2012 publiées après la sortie de SQL Server 2012 Service Pack 1
Statut
Microsoft a confirmé l’existence de ce problème dans les produits Microsoft répertoriés dans la section « S’applique à ».
Informations supplémentaires
Le tableau suivant fournit des informations supplémentaires sur les produits ou outils qui recherchent automatiquement la condition décrite dans la section « symptômes » dans votre instance de SQL Server et dans les versions de SQL Server auxquelles la règle est évaluée :
Logiciel de règle |
Titre de la règle |
Description de la règle |
Versions de produit auxquelles la règle est évaluée |
---|---|---|---|
System Center Advisor |
Fuite de mémoire SQL Server lorsque des requêtes sont exécutées sur une table temporaire dans une procédure stockée imbriquée dans SQL Server 2012 |
Dans ce conseiller d’instances SQL Server, il a détecté la présence d’une version SQL Server antérieure à la génération fixe d’un problème de fuite de mémoire. Cela peut se produire lorsque vous disposez d’une procédure stockée qui contient une procédure stockée par l’enfant, qui utilise des tables temporaires qui utilise plus de curseurs. Il est possible que vous remarquiez des MEMORYCLERK_SQLOPTIMIZER de sys.dm_os_memory_clerks et MEMOBJ_EXECCOMPILETEMP de sys.dm_os_memory_objects. Pour plus d’informations, reportez-vous à l’article KB. |
SQL Server 2012 |