تصحيح: حدوث تسرب لذاكرة عند استخدام الإجراء sp_OAMethod تخزين أو إجراء مخزن sp_OAGetProperty لاستدعاء أسلوب لكائن COM في SQL Server 2005

ينطبق على: Microsoft SQL Server 2005 Standard EditionMicrosoft SQL Server 2005 Developer EditionMicrosoft SQL Server 2005 Workgroup Edition

تقوم Microsoft بتوزيع الإصلاحات Microsoft SQL Server 2005 كأحد الملفات القابلة للتحميل. لأن الإصلاحات التراكمي، كل إصدار جديد يحتوي على كافة الإصلاحات العاجلة وإصدار تصحيح كافة تصحيحات الأمان التي تم تضمينها مع SQL Server 2005 السابقة.
توضح هذه المقالة التالية حول هذا الإصدار الإصلاح:
  • المشكلات التي يتم إصلاحها من خلال حزمة الإصلاحات الجديدة
  • متطلبات لتثبيت حزمة الإصلاحات الجديدة
  • ما إذا كان يجب تشغيل الكمبيوتر بعد تثبيت حزمة الإصلاحات الجديدة
  • ما إذا كان يتم استبدال حزمة الإصلاحات الجديدة أي حزمة الإصلاحات الجديدة
  • ما إذا كان يجب إجراء أية تغييرات على السجل
  • الملفات التي تم تضمينها في حزمة الإصلاحات الجديدة

الأعراض


في Microsoft SQL Server 2005، في عند استدعاء أسلوب كائن المكون (COM) طراز الكائن باستخدام الإجراء sp_OAMethod تخزين أو الإجراء sp_OAGetProperty تخزين، حدوث تسرب لذاكرة. الإجراء sp_OAMethod تخزين، تحدث هذه المشكلة إذا كان الأسلوب يرجع النتيجة في معلمة الإخراج للأسلوب. الإجراء sp_OAGetProperty تخزين، تحدث هذه المشكلة إذا كان الإجراء المخزن بإرجاع قيمة خاصية في معلمة الإخراج .

بالإضافة إلى ذلك، إذا تسرب الذاكرة منطقة ذاكرة تجمع عوادم العازلة، يتم تسجيل رسالة الخطأ التالية في ملف سجل خطأ SQL Server:
2008/05/01 08:35:07.80 spid535 دوونجرادينج النسخ الاحتياطي المخازن من 1024 كيلو بايت إلى 64 كيلو بايت
2008/05/06 09:35:22.55 spid77 فشل الظاهري تخصيص بايت: FAIL_VIRTUAL_RESERVE 1048576
2008/05/06 خطأ spid593 10:48:04.85: 701، الخطورة: حالة 17,: 123.
يتم spid593 10:48:04.85 2008/05/06 هناك ذاكرة كافية لتشغيل هذا الاستعلام.

السبب


تحدث هذه المشكلة لأن SQL Server 2005 لا تحرير الذاكرة التي تم تخصيصها إلى متغير يحتوي على قيمة معلمة الإخراج.

الحل


معلومات التحديث التراكمي

تم إصدار الإصلاح الخاص بهذه المشكلة أولاً في 2 التحديث التراكمي. لمزيد من المعلومات حول كيفية الحصول على حزمة التحديث التراكمي ل SQL Server 2005 Service Pack 2، انقر فوق رقم المقالة التالي لعرضها في "قاعدة المعارف ل Microsoft":
936305 التراكمية حزمة 2 تحديث ل SQL Server 2005 Service Pack 2
ملاحظة: لأن البنيات تراكمية، يحتوي كل إصدار إصلاح جديد على كافة الإصلاحات العاجلة وإصدار تصحيح كافة تصحيحات الأمان التي تم تضمينها مع SQL Server 2005 السابقة. توصي Microsoft بمراعاة تطبيق أحدث إصدار للإصلاح الذي يحتوي على هذا الإصلاح العاجل. لمزيد من المعلومات، انقر فوق رقم المقالة التالية لعرضها في "قاعدة معارف Microsoft":
937137 بناء SQL Server 2005 التي تم إصدارها بعد إصدار SQL Server 2005 Service Pack 2
يتم إنشاء الإصلاحات العاجلة ل Microsoft SQL Server 2005 لحزم خدمة SQL Server معينة. يجب تطبيق إصلاح عاجل SQL Server 2005 Service Pack 2 على تثبيت SQL Server 2005 Service Pack 2. بشكل افتراضي، يتم تضمين أي إصلاح جديد قد يتوفر في حزمة خدمـات لـ SQL Server في حزمة خدمـات لـ SQL Server التالية.

معلومات الإصلاح العاجل

يتوفر إصلاح عاجل معتمد من Microsoft. ومع ذلك، يهدف هذا الإصلاح العاجل إلى حل المشكلة الموضحة في هذه المقالة فقط. تطبيق هذا الإصلاح العاجل فقط على الأنظمة التي تواجه هذه المشكلة بالتحديد. قد يتم إجراء اختبارات إضافية على هذا الإصلاح العاجل. ولذلك، إذا لم يكن تأثير المشكلة كبيرا، نوصي بالانتظار حتى الإصدار التالي من تحديث البرنامج الذي يحتوي على هذا الإصلاح العاجل.

إذا كان يتوفر الإصلاح العاجل للتنزيل، يوجد مقطع "توفر تنزيل الإصلاح عاجل" أعلى مقالة قاعدة المعارف. في حالة عدم ظهور هذا القسم، اتصل بخدمة العملاء ل Microsoft والدعم للحصول على الإصلاح العاجل.

ملاحظة: في حالة حدوث مشكلات إضافية أو يجب إجراء استكشاف للأخطاء وحلها، قد يلزم إنشاء طلب خدمة منفصل. سيتم تطبيق تكاليف الدعم المعتادة على أسئلة الدعم الإضافية والمشكلات التي لا يعمل على حلها هذا الإصلاح العاجل بالتحديد. للحصول على قائمة أرقام هواتف خدمة العملاء ل Microsoft والدعم أو لإنشاء طلب خدمة منفصل، قم بزيارة موقع Microsoft التالي على الويب:ملاحظة: يعرض النموذج "توفر تنزيل الإصلاح العاجل" اللغات التي يتوفر الإصلاح الجديد. في حالة عدم ظهور اللغة الخاصة بك، يكون بسبب عدم توفر إصلاح عاجل لتلك اللغة.

المتطلبات الأساسية

يجب أن يكون لديك Microsoft SQL Server 2005 Service Pack 1 (SP1) مثبتة لتطبيق هذا الإصلاح العاجل.

لمزيد من المعلومات حول كيفية الحصول على SQL Server 2005 Service Pack 1، انقر فوق رقم المقالة التالي لعرضها في "قاعدة المعارف ل Microsoft":

كيفية الحصول على أحدث حزمة خدمة ل SQL Server 2005 913089

معلومات إعادة التشغيل

ليس من الضروري إعادة تشغيل جهاز الكمبيوتر بعد تطبيق هذا الإصلاح العاجل.

معلومات التسجيل

ليس لديك لتغيير التسجيل.

معلومات ملف الإصلاح العاجل

يحتوي هذا الإصلاح العاجل على الملفات المطلوبة لتصحيح المشكلات التي تسرد هذه المقالة فقط. قد لا يحتوي هذا الإصلاح العاجل على كافة الملفات التي يجب أن يكون لديك لتحديث منتج لأحدث بنية بشكل كامل. يحتوي الإصدار "اللغة الإنجليزية" من هذا الإصلاح العاجل سمات الملف (أو سمات الملف الأحدث) المسرودة في الجدول التالي. يتم سرد التواريخ والأوقات الخاصة بهذه الملفات بالتوقيت العالمي المتفق عليه (UTC). عند عرض معلومات الملف، يتم تحويلها إلى التوقيت المحلي. لمعرفة الفرق بين التوقيت العالمي المتفق عليه والتوقيت المحلي، استخدم علامة التبويب المنطقة الزمنية في عنصر التاريخ والوقت في "لوحة التحكم".
إصدار SQL Server 2005 32-بت
اسم الملفإصدار الملفحجم الملفالتاريخالوقتالنظام الأساسي
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
إصدار SQL Server 2005 الذي يستند إلى x64
اسم الملفإصدار الملفحجم الملفالتاريخالوقتالنظام الأساسي
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

الحالة


أقرت Microsoft أن هذه مشكلة في منتجات Microsoft المسردة في قسم "ينطبق على".

المراجع


لمزيد من المعلومات حول نفس المشكلة في Microsoft SQL Server 2000، انقر فوق رقم المقالة التالي لعرضها في "قاعدة المعارف ل Microsoft":

إصلاح 816937 : قد يحدث تسرب لذاكرة عند استخدام الإجراء sp_OAMethod تخزين لاستدعاء أسلوب لكائن COM

لمزيد من المعلومات حول مخطط التسمية لتحديثات SQL Server، انقر فوق رقم المقالة التالي لعرضها في "قاعدة المعارف ل Microsoft":

حزم تحديث مخطط تسمية جديدة 822499 لبرامج Microsoft SQL Server

لمزيد من المعلومات حول مصطلحات تحديث البرامج، انقر فوق رقم المقال التالي لعرضه في "قاعدة معارف Microsoft":

824684 وصف للمصطلحات القياسية المستخدمة في وصف تحديثات برامج Microsoft

مزيد من المعلومات


في نموذج البرنامج النصي التالي، يمكنك استخدام الإجراءات المخزنة sp_OAMethod والإجراءات sp_OAGetProperty تخزين للحصول على النتائج باستخدام معلمة الإخراج . إذا قمت بتشغيل هذا البرنامج النصي مرارا وتكرارا على اتصال جديد ب SQL Server 2005، حدوث تسرب لذاكرة في كل مرة.
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
بالإضافة إلى ذلك، قد تواجه حدوث انتهاك وصول لأن نبين بروبليمثات في "مؤشرات الخطأ" يظهر المقطع. ملف سجل الأخطاء SQL سيتم تضمين المعلومات التالية:
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

تم إصلاح هذه المشكلة في ملف Odsole70.dll. يتم إصدار الثنائية الثابتة الأولى 2005.90.2232.0.


لا يتضمن Microsoft SQL Server 2005 Service Pack 2 (SP2) هذه الثنائية الثابتة. في حالة مواجهة هذه المشكلة في SQL Server 2005 SP2، يجب تثبيت أحد التحديثات تراكمية لإصلاح هذه المشكلة.

التحديث التراكمي الأول يتضمن هذا الإصلاح حزمة التحديث التراكمي 2 ل SQL Server 2005 SP2. البنية الخاصة بهذا التحديث هو 09.00.3175. لذلك، يمكنك تثبيت آخر تحديث تراكمي ل SQL Server 2005 أو أي التحديث التراكمي الذي تم إصداره بعد حزيران/يونيه 2007 لحل هذه المشكلة.

لمزيد من المعلومات حول التحديثات التراكمية ل SQL Server 2005 Service Pack 2، انقر فوق رقم المقالة التالي لعرضها في "قاعدة المعارف ل Microsoft":

937137 بناء SQL Server 2005 التي تم إصدارها بعد إصدار SQL Server 2005 Service Pack 2