1

我预计将对 Microsoft SQL Server 2008 上的旧 SQL 应用程序进行(小)更改。它使用多个数据库、许多存储过程、函数和一些 CLR 程序集。

没有大的文档,只有周围人头脑中的一些常识

当您搜索调用存储过程的所有位置时,您使用什么工具?我不是经验丰富的 SQL 开发人员。我的经验更适合源代码存储在文本文件而不是数据库中的编程语言。

您会推荐哪些工具来学习旧版 SQL 应用程序的内容?

谢谢,彼得

4

1 回答 1

3

对于具体问题:

调用存储过程的所有地方?

您可以使用蛮力,但这会导致一些误报,其中过程名称很简单并且可能自然地出现在代码中(甚至作为另一个对象名称的一部分)或注释中:

SELECT OBJECT_SCHEMA_NAME([object_id]), OBJECT_NAME([object_id])
  FROM sys.sql_modules
  WHERE definition LIKE '%your_procedure_name%';

这也不会捕获对使用动态 SQL 构建的过程的调用,但我认为无论如何都没有完美的包罗万象的解决方案。您还可以发现作业正在调用存储过程的情况:

SELECT j.name FROM msdb.dbo.sysjobs AS j
  INNER JOIN msdb.dbo.sysjobsteps AS s
  ON j.job_id = s.job_id
  WHERE s.command LIKE '%your_procedure_name%';

(对于误报和动态 SQL 存在同样的警告,以及即使它们相关也不会被捕获的嵌套过程调用。)

其他一些想法:

于 2012-08-07T12:39:30.560 回答