sql - 解析存储过程

标签 sql stored-procedures sql-server-2008-r2

有没有办法扫描 SQL Server 以查找所有存储过程、读取它们的主体并确定它们使用的表列表?我的目的是对大型遗留数据库进行分析。 (SQL Server 2008R2,最好是 C#,但语言在很大程度上是无关紧要的。)

最佳答案

利用 SQL Server 的 sp_depends系统存储过程。

  • 获取所有存储过程的列表。
  • select  specific_name   from information_schema.routines
    where routine_type='PROCEDURE' and specific_name not like 'sp_%'
    
  • 将此列表与 sp_depends 一起使用,并将其结果插入表中。
  • declare @t table([name] varchar(50),[type] varchar(50),
    updated varchar(10),selected varchar(10),[column] varchar(50))
    
    insert into @t exec sp_depends 'MyProc1';
    insert into @t exec sp_depends 'MyProc2';
    insert into @t exec sp_depends 'MyProc3';
    
    select [name] from @t group by [name];
    
    More on sp_depends

    关于sql - 解析存储过程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8419842/

    相关文章:

    SQL 索引 View : what happens if data has changed

    MySQL存储过程语法困惑

    sql - SSMS 2016 中带有 R 脚本的存储过程错误

    sql - 如何查看复制快照代理状态?

    stored-procedures - 存储过程的 SQL Server 堆栈跟踪

    sql - 读取下一条记录 "NOT"上一条记录sql

    mysql - 子查询中的 union all 仅返回 1ste 值 - 我认为

    mysql - GROUP BY 导致 SUM() 出现问题

    mysql - 如何对数据库中的字母数值使用自动递增

    mysql - MYSQL 如何从另一个查询结果中减去一个查询结果