我希望对Microsoft SQL Server 2008上的旧SQL应用程序进行(小)更改。它使用多个数据库,许多存储过程,函数和一些CLR程序集。
周围人群中没有大图片文档,只有一些常识。
当您搜索说所有存储过程称为的地方时,您使用了哪些工具?我不是经验丰富的SQL开发人员。我的经验更适合编程语言,其中源代码存储在文本文件中而不是数据库中。
您建议使用哪些工具来学习旧SQL应用程序的内容?
谢谢,彼得
答案 0 :(得分: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存在相同的警告,以及嵌套的过程调用,即使它们是相关的也不会被捕获。)
其他一些想法: