אובייקטים התלויים בעמודה

31/05/2015

אין תגובות

אנחנו משנים עמודה בטבלה: אולי משנים אותה מ-(Varchar(10 ל-(NVarchar(20, אולי מוחקים אותה לגמרי, וכו’; ורוצים למצוא היכן נעשה בה שימוש במפורש או במרומז (פנייה מסוג * Select) כדי לתקן את הקוד: יש להכניס אליה או לשלוף ממנה בעזרת משתנים מהסוג המתאים, או לבטל פניות אליה.
בקיצור- להלן הסקריפט:

Declare    @Tbl Varchar(200)='dbo.MyTbl',

           @Col Sysname='MyCol';

Select     CA1.ReferencedObject,

           CA2.ReferencingObject,

           C.name,

           D.is_selected [Select],    --Is part of an explicit Select command

           D.is_updated [DDL],        --Is part of a Delete/Update/Insert command

           D.is_select_all [Select*]--Is part of a Select * command

From sys.sql_dependencies D

Left Join sys.columns C

           On D.referenced_major_id=C.object_id

           And D.referenced_minor_id=C.column_id

Cross Apply (Select Concat(Schema_Name(schema_id),'.',name) ReferencedObject From sys.objects O2 Where O2.object_id=D.referenced_major_id) CA1

Cross Apply (Select Concat(Schema_Name(schema_id),'.',name) ReferencingObject From sys.objects O1 Where O1.object_id=D.object_id) CA2

Where CA1.ReferencedObject=@Tbl

           And IsNull(C.name,@Col)=@Col

Order By CA1.ReferencedObject,

           CA2.ReferencingObject,

           C.name;

בקוד מוסברות משמעויותיהן של שלוש העמודות האחרונות.

יש לקחת בחשבון שסקריפט זה אינו מטפל בפניות בעזרת קוד דינאמי, פניות מדטבייסים אחרים, ופניות דרך כלים חיצוניים (למעשה זה קוד דינאמי).

הוסף תגובה
facebook linkedin twitter email

כתיבת תגובה

האימייל לא יוצג באתר. שדות החובה מסומנים *