是否有一種方法可以確定數據庫內和列之間的列級依賴關係?我想生成一個數據庫中所有未被任何東西(視圖,特效,UDF)使用的列的報告。確定數據庫之間的列級依賴關係
例如
在數據庫'DB1'中,有一個表名爲'col1'的列。如何確定數據庫'DB1'或第二個數據庫'DB2'中的proc,views或UDF是否正在使用'col1'?
謝謝
是否有一種方法可以確定數據庫內和列之間的列級依賴關係?我想生成一個數據庫中所有未被任何東西(視圖,特效,UDF)使用的列的報告。確定數據庫之間的列級依賴關係
例如
在數據庫'DB1'中,有一個表名爲'col1'的列。如何確定數據庫'DB1'或第二個數據庫'DB2'中的proc,views或UDF是否正在使用'col1'?
謝謝
如果只有COL1,DB1和DB2,您可以編寫出DB1和DB2對象並搜索到COL1引用。
只有兩個數據庫可供搜索,但有大量的列要檢查。原始數據庫從外部系統導入,不會區分系統所需的實際列;它只是把它們全部帶入,所以有很多是不必要的。 – GernBlandston 2010-08-17 19:28:09
您可以嘗試使用:
SELECT OBJECT_NAME(m.object_id), m.*
FROM SYS.SQL_MODULES m
WHERE m.definition LIKE N'%my_column_name%'
SYSCOMMENTS
和INFORMATION_SCHEMA.routines
具有爲nvarchar(4000)列。所以如果在位置3998使用「my_column_name」,它將不會被找到。 SYSCOMMENTS確實有多行,但ROUTINES截斷。
但這不會對SELECT *
的情況有任何幫助,因爲列名不會出現在文本中。
您正在使用哪些DBMS? – 2010-08-17 19:20:23
此問題的答案可能因平臺而異。請確定您感興趣的是哪個版本的SQL。 – kbrimington 2010-08-17 19:21:02
對不起! SQL Server 2005 – GernBlandston 2010-08-17 19:22:25