كيفية استرداد كافة الفهارس في قاعدة البيانات مع أنواع البيانات الخاصة بها في SQL Server 2005؟
-
14-11-2019 - |
سؤال
لدي مهمة صيانة فاشلة نظرًا لوجود عدد قليل من الفهارس في قاعدة البيانات من النوع الذي لا يسمح بإعادة بناء الفهرس عبر الإنترنت.لا يعد وضع عدم الاتصال خيارًا في مجال عملي، لذا يجب علي إنشاء مهمة 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.