تصحيح: قاعدة بيانات "إدارة مستودع البيانات" يزداد حجم كبير جداً بعد تمكين الميزة "مجمع البيانات" في SQL Server 2008

تقوم Microsoft بتوزيع الإصلاحات Microsoft SQL Server 2008 كأحد الملفات القابلة للتنزيل. لأن الإصلاحات التراكمي، كل إصدار جديد يحتوي على كافة الإصلاحات العاجلة وإصدار تصحيح كافة تصحيحات الأمان التي تم تضمينها مع SQL Server 2008 السابقة.

الأعراض

في Microsoft SQL Server 2008، بعد تمكين الميزة "مجمع البيانات"، قاعدة بيانات "إدارة مستودع البيانات" يزداد حجم كبير جداً وقد تستنفد مساحة القرص.

بالإضافة إلى ذلك، إذا قمت بتشغيل الاستعلامات التالية، تجد العديد من الصفوف معزولاً في الجداول snapshots.notable_query_plan أو snapshots.notable_query_text:
SELECT COUNT(*)FROM snapshots.notable_query_plan AS qp 
WHERE NOT EXISTS (
SELECT *
FROM snapshots.query_stats AS qs
WHERE qs.[sql_handle] = qp.[sql_handle] AND qs.plan_handle = qp.plan_handle
AND qs.plan_generation_num = qp.plan_generation_num
AND qs.statement_start_offset = qp.statement_start_offset
AND qs.statement_end_offset = qp.statement_end_offset
AND qs.creation_time = qp.creation_time);

SELECT COUNT(*)FROM snapshots.notable_query_text AS qt
WHERE NOT EXISTS (
SELECT *
FROM snapshots.query_stats AS qs
WHERE qs.[sql_handle] = qt.[sql_handle]);

السبب

حذف عملية الحذف العام البيانات الذي يتوافق مع معرف لقطة محددة. ومع ذلك، الصفوف خطة الاستعلام والصفوف نص الاستعلام لا تتوافق مع معرف لقطة محددة. ولذلك، لا يتم حذف هذه الصفوف عن طريق عملية الحذف العام.

الحل

SQL Server 2008

هام: يجب استخدام هذا الخيار إذا كنت تستخدم نسخة إصدار SQL Server 2008.

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

SQL Server 2008 Service Pack 1

هام: يجب استخدام هذا الخيار إذا كنت تستخدم SQL Server 2008 Service Pack 1.


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

الحل البديل

للتغلب على هذه المشكلة، استخدم البرامج النصية التالية في قاعدة بيانات "إدارة مستودع البيانات" لحذف صفوف معزولة هذه:
-- Purge snapshots.notable_query_plan table DECLARE @delete_batch_size bigint;
DECLARE @rows_affected int;
SET @delete_batch_size = 500;
SET @rows_affected = @delete_batch_size;
WHILE (@rows_affected = @delete_batch_size)
BEGIN
DELETE TOP (@delete_batch_size) snapshots.notable_query_plan
FROM snapshots.notable_query_plan AS qp
WHERE NOT EXISTS (
SELECT *
FROM snapshots.query_stats AS qs
WHERE qs.[sql_handle] = qp.[sql_handle] AND qs.plan_handle = qp.plan_handle
AND qs.plan_generation_num = qp.plan_generation_num
AND qs.statement_start_offset = qp.statement_start_offset
AND qs.statement_end_offset = qp.statement_end_offset
AND qs.creation_time = qp.creation_time);
SET @rows_affected = @@ROWCOUNT;
RAISERROR ('Deleted %d orphaned rows from snapshots.notable_query_plan', 0, 1, @rows_affected) WITH NOWAIT;
END;

-- Purge snapshots.notable_query_text table
SET @rows_affected = @delete_batch_size;
WHILE (@rows_affected = @delete_batch_size)
BEGIN
DELETE TOP (@delete_batch_size) snapshots.notable_query_text
FROM snapshots.notable_query_text AS qt
WHERE NOT EXISTS (
SELECT *
FROM snapshots.query_stats AS qs
WHERE qs.[sql_handle] = qt.[sql_handle]);
SET @rows_affected = @@ROWCOUNT;
RAISERROR ('Deleted %d orphaned rows from snapshots.notable_query_text', 0, 1, @rows_affected) WITH NOWAIT;
END;

الحالة

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

المراجع

لمزيد من المعلومات حول "نموذج تقديم تزايدي" ل SQL Server، انقر فوق رقم المقالة التالي لعرضها في "قاعدة المعارف ل Microsoft":

935897 "نموذج تقديم تزايدي" يتوفر من فريق SQL Server لتسليم الإصلاحات العاجلة للمشاكل التي تم الإبلاغ عنها



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

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


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

رقم الموضوع: 970014 - آخر مراجعة: 13‏/01‏/2017 - المراجعة: 1

تعليقات