0

我的数据库及其父表中有一个触发器列表,我想找到最终触发触发器的原始事件。我有许多使用数据库的项目,包括 Silverlight、ASP.net 和 WPF。所有应用程序都必须使用 DML 存储过程。

除了将存储过程编写成文本文件然后执行手动搜索之外,有没有办法查询我的存储过程“guts”以查找触发器父表上的插入和更新?我在想有一个系统视图或我可以使用的东西。

一旦我能够查明存储过程,我就可以搜索项目源代码并识别调用 DML 的事件。

4

2 回答 2

1

一个简单的查询可以为您提供该信息

SELECT Name
FROM sys.procedures
WHERE OBJECT_DEFINITION(OBJECT_ID) LIKE '%<table_name_here>%'
于 2013-04-09T17:31:16.827 回答
1

如果有多个外部事件使用相同的存储过程来触发触发器,那么仅查找存储过程将无济于事,因为您将不知道是什么外部事件启动了它。

您可以使用 sys 表来查找正在操作数据和触发触发器的存储过程,但这无助于您首先确定是哪个事件触发了它。

为此,您需要分析器来帮助您捕获解决此问题所需的应用程序、主机和其他详细信息。

于 2013-04-11T08:58:39.207 回答