2010-08-17 92 views
2

是否有一种方法可以确定数据库内和列之间的列级依赖关系?我想生成一个数据库中所有未被任何东西(视图,特效,UDF)使用的列的报告。确定数据库之间的列级依赖关系

例如

在数据库'DB1'中,有一个表名为'col1'的列。如何确定数据库'DB1'或第二个数据库'DB2'中的proc,views或UDF是否正在使用'col1'?

谢谢

+0

您正在使用哪些DBMS? – 2010-08-17 19:20:23

+0

此问题的答案可能因平台而异。请确定您感兴趣的是哪个版本的SQL。 – kbrimington 2010-08-17 19:21:02

+0

对不起! SQL Server 2005 – GernBlandston 2010-08-17 19:22:25

回答

0

如果只有COL1,DB1和DB2,您可以编写出DB1和DB2对象并搜索到COL1引用。

+0

只有两个数据库可供搜索,但有大量的列要检查。原始数据库从外部系统导入,不会区分系统所需的实际列;它只是把它们全部带入,所以有很多是不必要的。 – GernBlandston 2010-08-17 19:28:09

2

您可以尝试使用:

SELECT OBJECT_NAME(m.object_id), m.* 
    FROM SYS.SQL_MODULES m 
WHERE m.definition LIKE N'%my_column_name%' 

SYSCOMMENTSINFORMATION_SCHEMA.routines具有为nvarchar(4000)列。所以如果在位置3998使用“my_column_name”,它将不会被找到。 SYSCOMMENTS确实有多行,但ROUTINES截断。

但这不会对SELECT *的情况有任何帮助,因为列名不会出现在文本中。