sql - 如何查找影响特定列的存储过程列表?

标签 sql sql-server sql-server-2005 stored-procedures

我正在研究这个大型数据库,其中 SP 中嵌入了很多业务知识[我知道!],并且 SP 之间有很多链接。即一个存储过程调用另一个存储过程。

我想找出更新特定列的存储过程列表。我该怎么做。

按照中所述使用 showplan_All SQL Table and column Parser for stored procedures对我来说不起作用,因为这是一个共享的开发数据库。

按照描述使用来自主数据库的 Sp 扫描系统文本是不可行的,因为我无权访问主数据库。

那么我怎样才能找到这些信息呢?

最佳答案

从系统 View sys.sql_dependencies中,您可以获取列级别的依赖关系。

DECLARE @Schema SYSNAME
DECLARE @Table SYSNAME
DECLARE @Column SYSNAME

SET @Schema = 'dbo'
SET @Table = 'TableName'
SET @Column = 'ColumnName'

SELECT o.name
FROM sys.sql_dependencies AS d
  INNER JOIN sys.all_objects AS o ON o.object_id = d.object_id
  INNER JOIN sys.all_objects AS ro ON ro.object_id = d.referenced_major_id
  INNER JOIN sys.all_columns AS c ON c.object_id = ro.object_id AND c.column_id = d.referenced_minor_id
WHERE (SCHEMA_NAME(ro.schema_id)=@Schema) 
  and o.type_desc = 'SQL_STORED_PROCEDURE'
  and ro.name = @Table
  and c.name = @Column
GROUP BY o.name

关于sql - 如何查找影响特定列的存储过程列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/686247/

相关文章:

mysql - 选择包含特定数量的给定字符的项目 (SQL)

MySQL:在group_concat中使用concat时如何排序?

sql - 使用子查询比较两个表?

sql-server - 如何在T-SQL中设置多个变量的值?

sql - PIVOT 语句是否有 ANSI 规范?

java - 将 JDBC 驱动程序连接到 MSSQL 数据库时出现问题

sql - 如何获取存储过程参数详细信息?

c# - 从数据库中填充数据时,如何在下拉列表中添加选项 "Any"?

sql - 从 SQL/SSRS 2005 中的每一行中选择最大日期的列名

java - 在JAVA中填充jTable