كيفية استرداد كافة الفهارس في قاعدة البيانات مع أنواع البيانات الخاصة بها في SQL Server 2005؟

StackOverflow https://stackoverflow.com/questions/9008292

سؤال

لدي مهمة صيانة فاشلة نظرًا لوجود عدد قليل من الفهارس في قاعدة البيانات من النوع الذي لا يسمح بإعادة بناء الفهرس عبر الإنترنت.لا يعد وضع عدم الاتصال خيارًا في مجال عملي، لذا يجب علي إنشاء مهمة T-SQL الخاصة بي والتي تقوم بإعادة بناء الفهرس على فهارس محددة.قاعدة البيانات كبيرة الحجم وتحتوي على العديد من الجداول والفهارس، فهل هناك طريقة للاستعلام عن النظام لجميع الفهارس وأنواع البيانات الخاصة بها؟

هل كانت مفيدة؟

المحلول

سيُظهر لك هذا جميع الأعمدة لجميع المؤشرات، بما في ذلك أعمدة "الجداول الأساسية" مثل الأكوام والفهرس المجمع وجميع INCLUDE الأعمدة كذلك:

select o.name as [object_name],
    ix.name as [index_name],
    coalesce(c.name,cc.name) as [column_name],
    t.name as [type_name],
    coalesce(c.max_length, cc.max_length) as max_length
from sys.indexes ix
join sys.objects o
    on ix.object_id = o.object_id
left join sys.index_columns ic
    on ix.object_id = ic.object_id
    and ix.index_id = ix.index_id
    and ix.index_id > 1
left join sys.columns c
    on  ic.object_id = c.object_id
    and ic.column_id = c.column_id
left join sys.columns cc
    on ix.object_id = cc.object_id
    and ix.index_id in (1,0)
join sys.types t
    on t.system_type_id = coalesce(c.system_type_id,cc.system_type_id)  
where o.type = 'U'
order by object_name, index_name, column_name;

يمكنك بعد ذلك تحديد العناصر غير الآمنة لإعادة بناء الفهرس عبر الإنترنت (أنواع BLOB/XML/CLR).لاحظ أنه في SQL Server 2012، تم رفع القيود المفروضة على إنشاء الفهرس عبر الإنترنت باستخدام أعمدة LOB، راجع عمليات الفهرس عبر الإنترنت للفهارس التي تحتوي على أعمدة LOB.

نصائح أخرى

لقد اتخذنا مؤخرا مثل هذا الإجراء.لديها علامة "hasblobs" لهذا الغرض


giveacodicetagpre.
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top