CORRECTIF : Une fuite de mémoire se produit lorsque vous utilisez la procédure stockée de sp_OAGetProperty ou la procédure stockée sp_OAMethod pour appeler une méthode d’un objet COM dans SQL Server 2005

N° de bogue : 50001312 (correctif SQL)
Microsoft distribue les correctifs de Microsoft SQL Server 2005 en tant que fichier téléchargeable. Les correctifs étant cumulatifs, chaque nouvelle version contient tous les correctifs et correctifs de sécurité inclus dans la précédente de SQL Server 2005 version du correctif.
Cet article décrit les éléments suivants concernant cette version du correctif :
  • Les problèmes qui sont résolus par le package de correctifs
  • Les conditions préalables à l’installation du package de correctifs
  • Si vous devez redémarrer l’ordinateur après avoir installé le package de correctifs
  • Si le package de correctifs est remplacé par un autre package de correctif logiciel
  • Si vous devez modifier le Registre
  • Les fichiers qui sont contenus dans le package de correctifs

Symptômes

Dans Microsoft SQL Server 2005, lorsque vous appelez une méthode d’un objet COM (model) de composant à l’aide de la procédure stockée sp_OAMethod ou la procédure stockée de sp_OAGetProperty , une fuite de mémoire se produit. Pour la procédure stockée sp_OAMethod , ce problème se produit si la méthode renvoie le résultat dans le paramètre de sortie de la méthode. Pour la procédure stockée de sp_OAGetProperty , ce problème se produit si la procédure stockée renvoie une valeur de propriété dans le paramètre de sortie .

En outre, si la région de mémoire de pool du tampon non d’échappement de fuites de la mémoire, le message d’erreur suivant est enregistré dans le fichier journal des erreurs SQL Server :
spid535 de 08:35:07.80 2008-05-01 rétrogradation les tampons de journal de sauvegarde à partir de 1 024 Ko à 64 Ko
2008-05-06 09:35:22.55 spid77 échec virtuel allouer octets : FAIL_VIRTUAL_RESERVE 1048576
Erreur de spid593 de 10:48:04.85 2008-05-06 : 701, gravité : 17, état : 123.
2008-05-06 10:48:04.85 spid593 il est mémoire système insuffisante pour exécuter cette requête.

Cause

Ce problème se produit car SQL Server 2005 ne libère pas la mémoire qui est allouée à la variable qui contient la valeur de paramètre de sortie.

Résolution

Informations de mise à jour cumulative

Le correctif de ce problème a été publié dans les 2 mise à jour Cumulative. Pour plus d’informations sur l’obtention de ce package de mise à jour cumulative pour SQL Server 2005 Service Pack 2, cliquez sur le numéro ci-dessous pour afficher l’article correspondant dans la Base de connaissances Microsoft :
936305 Cumulative mise à jour 2 pour SQL Server 2005 Service Pack 2
Remarque Les versions étant cumulatives, chaque nouvelle version de correctif contient tous les correctifs et correctifs de sécurité inclus dans la précédente de SQL Server 2005 version du correctif. Microsoft vous recommande l’application la plus récente version du correctif qui comprendra ce correctif. Pour plus d'informations, cliquez sur le numéro ci-dessous pour afficher l'article correspondant dans la Base de connaissances Microsoft :
937137 le SQL Server 2005 versions publiées après la publication de SQL Server 2005 Service Pack 2
Les correctifs Microsoft SQL Server 2005 sont créés pour les packs de service spécifiques de SQL Server. Vous devez appliquer un correctif SQL Server 2005 Service Pack 2 à une installation de SQL Server 2005 Service Pack 2. Par défaut, tout correctif qui est fourni dans un service pack de SQL Server est inclus dans le prochain service pack de SQL Server.

Informations sur le correctif

Un correctif pris en charge est disponible auprès de Microsoft. Toutefois, ce correctif vise à corriger uniquement le problème décrit dans cet article. Appliquez ce correctif uniquement aux systèmes rencontrant ce problème spécifique. Ce correctif va peut-être subir des tests supplémentaires. Par conséquent, si vous n'êtes pas sérieusement concerné par ce problème, nous vous recommandons d'attendre la prochaine mise à jour logicielle qui contiendra ce correctif.

Si le correctif est disponible pour le téléchargement, il existe une section « Téléchargement de correctif logiciel disponible » au début de cet article de la Base de connaissances. Si cette section n'apparaît pas, contactez le Service clientèle et Support de Microsoft pour obtenir le correctif.

Remarque Si des problèmes supplémentaires se produisent ou si des procédures de dépannage sont nécessaires, vous devrez peut-être formuler une demande de service distincte. Les coûts habituels du support technique s'appliqueront aux questions et problèmes qui ne relèvent pas de ce correctif logiciel. Pour une liste complète des numéros de téléphone service clientèle de Microsoft ou pour créer une demande de service distincte, visitez le site Web de Microsoft à l’adresse suivante :Remarque Le formulaire « Téléchargement de correctif logiciel disponible » affiche les langues pour lesquelles le correctif est disponible. Si vous ne voyez pas votre langue, c'est parce qu'il n'y a pas de correctif disponible pour cette langue.

Conditions préalables

Vous devez disposer de Microsoft SQL Server 2005 Service Pack 1 (SP1) pour appliquer ce correctif.

Pour plus d’informations sur la façon d’obtenir SQL Server 2005 Service Pack 1, cliquez sur le numéro ci-dessous pour afficher l’article correspondant dans la Base de connaissances Microsoft :

913089 comment obtenir le dernier service pack pour SQL Server 2005

Informations sur le redémarrage

Vous n’êtes pas obligé de redémarrer l’ordinateur après avoir appliqué ce correctif.

Informations concernant le Registre

Vous n’êtes pas obligé de modifier le Registre.

Informations sur les fichiers de correctif logiciel

Ce correctif contient uniquement les fichiers qui sont nécessaires pour corriger les problèmes décrits dans cet article. Ce correctif ne peut pas contenir tous les fichiers nécessaires à la mise à jour complète d’un produit vers la dernière version. Version l’anglaise de ce correctif possède les attributs de fichier (ou ultérieure) répertoriés dans le tableau suivant. Les dates et heures de ces fichiers sont répertoriées en temps universel coordonné (UTC). Lorsque vous affichez les informations de fichier, elles sont converties en heure locale. Pour trouver la différence entre l’UTC et l’heure locale, utilisez l’onglet fuseau horaire dans l’élément de Date et heure dans le panneau de configuration.
Version SQL Server 2005 32 bits
Nom de fichierVersion de fichierTaille du fichierDateHeurePlateforme
Bcp.exe2005.90.2232.069,48809-May-200719:36x86
Databasemailengine.dll9.0.2232.075,12009-May-200719:36x86
Logread.exe2005.90.2232.0400,75209-May-200719:37x86
Microsoft.analysisservices.adomdclient.dll9.0.2232.0546,16009-May-200719:37x86
Microsoft.analysisservices.deploymentengine.dll9.0.2232.0140,65609-May-200719:37x86
Microsoft.analysisservices.dll9.0.2232.01,217,90409-May-200719:37x86
Microsoft.sqlserver.mgdsqldumper.dll2005.90.2232.078,19209-May-200719:37x86
Microsoft.sqlserver.sqlenum.dll9.0.2232.0910,70409-May-200719:37x86
Msasxpress.dll9.0.2232.024,94409-May-200719:37x86
Msgprox.dll2005.90.2232.0200,56009-May-200719:37x86
Msmdlocal.dll9.0.2232.015,646,06409-May-200719:37x86
Msmdredir.dll9.0.2232.03,993,96809-May-200719:37x86
Odsole70.dll2005.90.2232.059,76009-May-200719:37x86
Qrdrsvc.exe2005.90.2232.0369,52009-May-200719:37x86
Rdistcom.dll2005.90.2232.0643,44009-May-200719:37x86
Repldp.dll2005.90.2232.0187,24809-May-200719:37x86
Replmerg.exe2005.90.2232.0320,88009-May-200719:37x86
Replprov.dll2005.90.2232.0550,25609-May-200719:37x86
Replrec.dll2005.90.2232.0784,75209-May-200719:37x86
Replsub.dll2005.90.2232.0407,40809-May-200719:37x86
Spresolv.dll2005.90.2232.0177,00809-May-200719:37x86
Sqlaccess.dll2005.90.2232.0350,57609-May-200719:37x86
Sqlagent90.exe2005.90.2232.0321,39209-May-200719:37x86
Sqlservr.exe2005.90.2232.028,979,11209-May-200719:37x86
Sqsrvres.dll2005.90.2232.066,41609-May-200719:37x86
Xmlsub.dll2005.90.2232.0195,44009-May-200719:37x86
Xpstar90.dll2005.90.2232.0295,28009-May-200719:37x86
Xpstar90.rll2005.90.2232.0155,50409-May-200719:37x86
Version de base de x64 de SQL Server 2005
Nom de fichierVersion de fichierTaille du fichierDateHeurePlateforme
Bcp.exe2005.90.2232.088,94409-May-200716:46x64
Databasemailengine.dll9.0.2232.075,12009-May-200716:46x86
Logread.exe2005.90.2232.0525,16809-May-200716:46x64
Microsoft.analysisservices.adomdclient.dll9.0.2232.0546,16009-May-200716:46x86
Microsoft.analysisservices.adomdclient.dll9.0.2232.0546,16009-May-200719:37x86
Microsoft.analysisservices.deploymentengine.dll9.0.2232.0140,65609-May-200719:37x86
Microsoft.analysisservices.dll9.0.2232.01,217,90409-May-200719:37x86
Microsoft.sqlserver.mgdsqldumper.dll2005.90.2232.094,06409-May-200716:46x64
Microsoft.sqlserver.mgdsqldumper.dll2005.90.2232.078,19209-May-200719:37x86
Microsoft.sqlserver.sqlenum.dll9.0.2232.0877,93609-May-200716:46x86
Msasxpress.dll9.0.2232.030,06409-May-200716:46x64
Msasxpress.dll9.0.2232.024,94409-May-200719:37x86
Msgprox.dll2005.90.2232.0262,00009-May-200716:46x64
Msmdlocal.dll9.0.2232.015,646,06409-May-200719:37x86
Msmdredir.dll9.0.2232.03,993,96809-May-200719:37x86
Odsole70.dll2005.90.2232.090,99209-May-200716:46x64
Qrdrsvc.exe2005.90.2232.0434,03209-May-200716:46x64
Rdistcom.dll2005.90.2232.0836,46409-May-200716:46x64
Repldp.dll2005.90.2232.0237,93609-May-200716:46x64
Repldp.dll2005.90.2232.0187,24809-May-200719:37x86
Replmerg.exe2005.90.2232.0417,64809-May-200716:46x64
Replprov.dll2005.90.2232.0747,88809-May-200716:46x64
Replrec.dll2005.90.2232.01,010,54409-May-200716:46x64
Replsub.dll2005.90.2232.0528,24009-May-200716:46x64
Spresolv.dll2005.90.2232.0225,64809-May-200716:46x64
Sqlaccess.dll2005.90.2232.0357,74409-May-200716:46x86
Sqlagent90.exe2005.90.2232.0392,56009-May-200716:46x64
Sqlservr.exe2005.90.2232.039,373,16809-May-200716:46x64
Sqsrvres.dll2005.90.2232.078,19209-May-200716:46x64
Xmlsub.dll2005.90.2232.0319,85609-May-200716:46x64
Xpstar90.dll2005.90.2232.0543,60009-May-200716:46x64
Xpstar90.rll2005.90.2232.0156,01609-May-200716:46x64

État

Microsoft a confirmé l'existence de ce problème dans les produits Microsoft répertoriés dans la section « S'applique à ».

Références

Pour plus d’informations sur le problème de même dans Microsoft SQL Server 2000, cliquez sur le numéro ci-dessous pour afficher l’article correspondant dans la Base de connaissances Microsoft :

816937 correctif : une fuite de mémoire peut se produire lorsque vous utilisez la procédure stockée sp_OAMethod pour appeler une méthode d’un objet COM

Pour plus d’informations sur le schéma d’appellation des mises à jour de SQL Server, cliquez sur le numéro ci-dessous pour afficher l’article correspondant dans la Base de connaissances Microsoft :

Packages de mises à jour 822499 nouveau schéma d’appellation pour les logiciels de Microsoft SQL Server

Pour plus d'informations sur la terminologie de mise à jour logicielle, cliquez sur le numéro ci-dessous pour afficher l'article correspondant dans la Base de connaissances Microsoft :

Description 824684 terminologie standard utilisée pour décrire les mises à jour logicielles de Microsoft

Plus d'informations

Dans l’exemple suivant de script, vous utilisez la procédure stockée sp_OAMethod et la procédure stockée de sp_OAGetProperty pour obtenir des résultats à l’aide du paramètre de sortie . Si vous exécutez ce script à plusieurs reprises sur une nouvelle connexion SQL Server 2005, une fuite de mémoire se produit à chaque fois.
DECLARE @object int;DECLARE @hr int;
DECLARE @src varchar(255), @desc varchar(255);
EXEC @hr = sp_OACreate 'SQLDMO.SQLServer', @object OUT;
IF @hr <> 0 BEGIN
EXEC sp_OAGetErrorInfo @object, @src OUT, @desc OUT
RETURN
END
EXEC @hr = sp_OASetProperty @object, 'LoginSecure', 'TRUE'
IF @hr <> 0 BEGIN
EXEC sp_OAGetErrorInfo @object
RETURN
END
EXEC @hr = sp_OAMethod @object, 'Connect', NULL, '<ComputerName>\<InstanceName>'
IF @hr <> 0 BEGIN
EXEC sp_OAGetErrorInfo @object
RETURN
END
DECLARE @property varchar(255)
EXEC @hr = sp_OAMethod @object, 'HostName', @property OUT
IF @hr <> 0 BEGIN
EXEC sp_OAGetErrorInfo @object
RETURN
END
PRINT @property
EXEC @hr = sp_OAGetProperty @object, 'HostName', @property OUT
IF @hr <> 0 BEGIN
EXEC sp_OAGetErrorInfo @object
RETURN
END
PRINT @property
EXEC @hr = sp_OADestroy @object
IF @hr <> 0 BEGIN
EXEC sp_OAGetErrorInfo @object
RETURN
END
En outre, vous pouvez rencontrer une violation d’accès car le problemthat est décrite dans la section « Symptômes » section se produit. Le fichier journal des erreurs SQL inclut les informations suivantes :
2008-03-24 10:03:09.51 spid51      Using 'odsole70.dll' version '2005.90.1399' to execute extended stored procedure 'sp_OACreate'. This is an informational message only; no user action is required.2008-03-24 10:03:13.43 spid51      Using 'dbghelp.dll' version '4.0.5'
2008-03-24 10:03:13.51 spid51 ***Stack Dump being sent to C:\Program Files\Microsoft SQL Server\MSSQL.2\MSSQL\LOG\SQLDump0001.txt
2008-03-24 10:03:13.53 spid51 SqlDumpExceptionHandler: Process 51 generated fatal exception c0000005 EXCEPTION_ACCESS_VIOLATION. SQL Server is terminating this process.
2008-03-24 10:03:13.53 spid51 * *******************************************************************************
2008-03-24 10:03:13.53 spid51 *
2008-03-24 10:03:13.53 spid51 * BEGIN STACK DUMP:
2008-03-24 10:03:13.53 spid51 * 03/24/08 10:03:13 spid 51
2008-03-24 10:03:13.53 spid51 *
2008-03-24 10:03:13.54 spid51 *
2008-03-24 10:03:13.54 spid51 * Exception Address = 0000000033387164 Module(odsole70+0000000000007164)
2008-03-24 10:03:13.54 spid51 * Exception Code = c0000005 EXCEPTION_ACCESS_VIOLATION
2008-03-24 10:03:13.54 spid51 * Access Violation occurred reading address 0000000006264FF8

Le correctif de ce problème est dans le fichier Odsole70.dll. La première version fixe du fichier binaire est 2005.90.2232.0.


Microsoft SQL Server 2005 Service Pack 2 (SP2) n’inclut pas ce fichier binaire fixe. Si vous rencontrez ce problème dans SQL Server 2005 SP2, vous devez installer une mise à jour cumulative pour résoudre ce problème.

La première mise à jour cumulative inclut ce correctif est un package de mise à jour Cumulative 2 pour SQL Server 2005 SP2. La build pour cette mise à jour est 09.00.3175. Par conséquent, vous pouvez installer les dernières mises à jour cumulatives pour SQL Server 2005 ou toute mise à jour cumulative a été publié après juin 2007 pour résoudre ce problème.

Pour plus d’informations sur les mises à jour cumulatives pour SQL Server 2005 Service Pack 2, cliquez sur le numéro ci-dessous pour afficher l’article correspondant dans la Base de connaissances Microsoft :

937137 le SQL Server 2005 versions publiées après la publication de SQL Server 2005 Service Pack 2

Propriétés

ID d'article : 937277 - Dernière mise à jour : 17 janv. 2017 - Révision : 1

Commentaires