همانطور که میدانید توسط Foreign Keyها میتوان اطلاعات یک فیلد از جدول را به فیلدی خاص در جداول دیگر ارجاع داد.
دستور زیر اسامی جداول همراه با تعداد ارجاعات آنها را به ترتیب پر ارجاعترین لیست خواهد کرد.
به طور مثال در DatawareHouseها پرارجاعترین جداول عموما جداول Dimension میباشند.
[sql]
select schema_name(tab.schema_id) + ‘.’ + tab.name as [table],
count(fk.name) as [references],
count(distinct fk.parent_object_id) as referencing_tables
from sys.tables as tab
left join sys.foreign_keys as fk
on tab.object_id = fk.referenced_object_id
group by schema_name(tab.schema_id), tab.name
having count(fk.name) > 0
order by 2 desc
[/sql]
Table: نام جدول به همراه نام شمای آن
References: تعداد Foreign keyهایی که به این جدول ارجاع دادهاند
Referencing_tables: تعداد جداول متمایزی که به این جدول ارجاع داده اند .گاهی اوقات ممکن است یک جدول از طریق چندین فیلد به یک جدول ارجاع داده شود, مانند جدول DimDate در DatawareHouseها
یک نمونه از نتیجه اجرای کوئری بالا:
در نتیجه بدست آمده از دیتابیس AdventureWorks جدول Products , 14 بار توسط 13 جدول مورد ارجاع قرار گرفته است.
دانلود این اسکریپت
1 دیدگاه
سولماز
خیلی ممنونم از شما و این دانش خوبتون که در اختیار میزارید تا برای ما هم راهی باشه و بر روی دانش مون افزوده بشه،این سایت فوق العادست مرسی