المساحة التي يستخدمها الجدول غير محرره بالبالكامل بعد استخدام جمله DELETE لحذف البيانات من الجدول في SQL Server


الخطا #: 219514 (SQL Server 8.0)

الأعراض


بعد استخدام جمله DELETE في Microsoft SQL Server لحذف البيانات من جدول ، قد تلاحظ ان المساحة التي يستخدمها الجدول غير محرره بالبالكامل. عند محاولة ادراج البيانات في قاعده البيانات ، قد تتلقي رسالة الخطا التالية:
تعذر تخصيص مساحة للعنصر 'TableName' في قاعده البيانات 'DatabaseName' لان مجموعه الاداات ' PRIMARY ' ممتلئة.
تمثل الملاحظة TableName اسم الجدول. DatabaseName يمثل اسم قاعده البيانات التي تحتوي علي الجدول.

السبب


تحدث هذه المشكلة نظرا لان SQL Server فقط يقوم بتحرير كل الصفحات التي يستخدمها جدول كومه الذاكرة المؤقتة عند تحقق الشروط التالية:
  • يحدث حذف في هذا الجدول.
  • يتم الاحتفاظ بتامين علي مستوي الجدول.
ملاحظة يتم إصدار Acrobat Reader من قِبل شركة Adobe Systems Inc.‎. جدول الكومة هو اي جدول غير مقترن بفهرس مرتب. إذا لم تكن الصفحات ديلوكاتيد ، فلا يمكن للكائنات الأخرى في قاعده البيانات أعاده استخدام الصفحات. ومع ذلك ، عندما تقوم بتمكين مستوي عزل قائم علي الصفوف في قاعده بيانات SQL Server 2005 ، لا يمكن تحرير الصفحات حتى إذا كان تامين علي مستوي الجدول محجوزا. للحصول علي مزيد من المعلومات حول مستويات العزل المستندة إلى تعيين الإصدار ، راجع الموضوع "استخدام مستويات العزل المستندة إلى تعيين الإصدارات للصفوف" في كتاب SQL Server 2005 عبر الإنترنت.

الحل البديل


للتغلب على هذه المشكلة، اتبع إحدى الطرق التالية:
  • قم بتضمين تلميح تابلوك في جمله DELETE إذا لم يتم تمكين مستوي عزل مستند إلى خاصيه تعيين القيمة في الصف. علي سبيل المثال ، استخدم عبارة مماثله لما يلي:
    DELETE FROM <TableName> WITH (TABLOCK)
    ملاحظه<يمثل TableName> اسم الجدول.
  • استخدم جمله اقتطاع جدول إذا أردت حذف كل السجلات في الجدول. علي سبيل المثال ، استخدم عبارة مماثله لما يلي:
    TRUNCATE TABLE <TableName>
  • إنشاء فهرس متفاوت البعد في عمود من الجدول. للحصول علي مزيد من المعلومات حول كيفيه إنشاء فهرس مجمع في جدول ، راجع الموضوع "إنشاء فهرس متفاوت البعد" في كتب SQL Server عبر الإنترنت.

الحالة


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