当服务器上任何数据库中的存储过程引用特定数据库中的列(假设数据库为AA
)时,我希望将这5列作为输出。< / p>
Column_name Table_Name Schema_Name Procedure_Name Database_Name
答案 0 :(得分:1)
对于您所在的当前数据库,其中有四列非常容易获取:
SELECT
TableName = t.Name,
SchemaName = s.Name,
ColumnName = c.Name,
DatabaseName = DB_NAME()
FROM
sys.tables t
INNER JOIN
sys.schemas s ON [t].[schema_id] = [s].[schema_id]
INNER JOIN
sys.columns c ON [t].[object_id] = [c].[object_id]
所有数据库中的所有表中的所有列不容易获得的内容。另外:确定每个列使用的程序也相当棘手(或几乎不可能)。
答案 1 :(得分:0)
从marc_s
回答我生成一个查询,该查询给出了该表所依赖的逗号分隔的Procedure_Name
SELECT
TableName = t.Name,
SchemaName = s.Name,
ColumnName = c.Name,
DatabaseName = DB_NAME(),
STUFF((SELECT ',' + name
FROM sys.procedures
WHERE object_id in (SELECT distinct id from sys.sysdepends
WHERE depid = (SELECT object_id FROM sys.tables
WHERE name=t.Name)
)
FOR XML PATH('')), 1, 0, '') AS sps
FROM
sys.tables t
INNER JOIN
sys.schemas s ON [t].[schema_id] = [s].[schema_id]
INNER JOIN
sys.columns c ON [t].[object_id] = [c].[object_id]