使用SQL Server 2000,有没有办法在所有触发程序中全局搜索模式?
调用存储过程的地方是隐藏我的。
这是我的第一篇文章,所以要善待。
答案 0 :(得分:14)
这将搜索SQL Server 2000上的触发器,过程,函数和视图(建议在较新版本上使用此方法;请参阅this blog post for a much better way):
SELECT o.name
FROM syscomments AS c
INNER JOIN sysobjects AS o
ON c.id = o.id
WHERE c.text LIKE '%procedurename%';
当然有些危险:
syscomments
将采取程序> 4000行并将它们分成多行。因此,大型程序可能只会在边界点上提及您的搜索字符串,而根本不会出现。这样的程序也可能会在列表中显示两次(您可以添加GROUP BY
来消除它)。GetAuthorSubscriptions
的存储过程,并且您正在寻找%GetAuthors%
,它仍会显示。使用带有COLLATE
子句的区分大小写的搜索可能有所帮助,但不一定能消除它。此处提供更多信息:
http://databases.aspfaq.com/database/how-do-i-find-a-stored-procedure-containing-text.html
我强烈建议离开SQL Server 2000.如果没有80亿其他好处,这个任务在更现代的版本中会容易得多。
请注意,您的存储过程可能无法从数据库中调用 - 它可能是来自应用程序的临时调用,某人的Management Studio的打开副本,甚至是作业。要搜索可以使用的作业:
SELECT
job_name = j.name,
s.step_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 '%procedurename%';
还是没有打开它?在TextData LIKE '%procedurename%'
...
答案 1 :(得分:2)
使用SQL Server 2017 使用SQL Server Management Studio
在对象资源管理器中查看过程的依赖性
使用Transact-SQL
您可以按照here
有关更多信息,请查看原始文章,网址为
https://docs.microsoft.com/en-us/sql/relational-databases/stored-procedures/view-the-dependencies-of-a-stored-procedure?view=sql-server-2017
答案 2 :(得分:0)
这是我编写的一个过程,它从系统表中获取源,并将其逐行放入表中。这样可以更容易地扫描文本并满足由于包装文本而可能在系统表中被切断的字符串。如果你每天或每小时运行一次,它会给你近乎实时的结果。
您可以扫描v $ source表以获取一个独特的过程名称列表,但是认为将整个解决方案放在此处是有用的。
如果有任何错误让我知道,因为它没有经过详尽的测试。
Description of course objectives and assignments 0.0% 68.4% 10.5% 15.8% 5.3% 0.0%
Communication of ideas and information 0.0% 52.6% 26.3% 10.5% 10.5% 0.0%
Expression of expectations for performance in this class 0.0% 68.4% 15.8% 10.5% 0.0% 5.3%
Availability to assist students in or out of class 0.0% 57.9% 31.6% 10.5% 0.0% 0.0%
Respect and concern for students 0.0% 47.4% 42.1% 10.5% 0.0% 0.0%
Stimulation of interest in course 0.0% 47.4% 26.3% 21.1% 0.0% 5.3%
Facilitation of learning 0.0% 52.6% 26.3% 10.5% 10.5% 0.0%
Overall assessment of instructor 0.0% 52.6% 31.6% 10.5% 0.0% 5.3%