我预计将对 Microsoft SQL Server 2008 上的旧 SQL 应用程序进行(小)更改。它使用多个数据库、许多存储过程、函数和一些 CLR 程序集。
没有大的文档,只有周围人头脑中的一些常识。
当您搜索调用存储过程的所有位置时,您使用什么工具?我不是经验丰富的 SQL 开发人员。我的经验更适合源代码存储在文本文件而不是数据库中的编程语言。
您会推荐哪些工具来学习旧版 SQL 应用程序的内容?
谢谢,彼得
我预计将对 Microsoft SQL Server 2008 上的旧 SQL 应用程序进行(小)更改。它使用多个数据库、许多存储过程、函数和一些 CLR 程序集。
没有大的文档,只有周围人头脑中的一些常识。
当您搜索调用存储过程的所有位置时,您使用什么工具?我不是经验丰富的 SQL 开发人员。我的经验更适合源代码存储在文本文件而不是数据库中的编程语言。
您会推荐哪些工具来学习旧版 SQL 应用程序的内容?
谢谢,彼得
对于具体问题:
调用存储过程的所有地方?
您可以使用蛮力,但这会导致一些误报,其中过程名称很简单并且可能自然地出现在代码中(甚至作为另一个对象名称的一部分)或注释中:
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 存在同样的警告,以及即使它们相关也不会被捕获的嵌套过程调用。)
其他一些想法: