我有一个带有数千个存储过程的 SQL Server 数据库(它是 2012 年,但可能是 2008 年)。
我想以编程方式知道哪个存储过程正在接收特定参数companyid
,但并没有真正在他们的查询中使用它。
所以这个项目的两个目标是:
- 确定哪些存储过程不接收参数
companyid
- 识别那些确实需要该参数
companyid
但并未在其代码中真正使用该参数的存储过程
我正在设想编写一些 TSQL 或用 C# 编写一个应用程序以完成任务 - 任何一个建议都会奏效。
所以我希望听到你们的消息,实现这一目标的最佳方法是什么?
提前致谢
==================================================== ========
基于这两个建议,解决方案如下:
SELECT Specific_Name,
((len(ROUTINE_DEFINITION) - len(replace(ROUTINE_DEFINITION, '@companyid', '')))/ 10) as COUNT,
ROUTINE_DEFINITION
FROM INFORMATION_SCHEMA.ROUTINES
WHERE ROUTINE_DEFINITION LIKE '%@companyid%'
ORDER BY 2, 1
注意:字符串替换除以 10 将为您提供正文中该特定字符串的实例数。1表示它只是参数,2或更多表示它在body中使用。
谢谢你们俩 !!