本主题适用于:
Visual Studio 旗舰版 |
Visual Studio 高级专业版 |
Visual Studio 专业版 |
Visual Studio 速成版 |
---|---|---|---|
![]() |
![]() |
![]() |
![]() |
若要调试触发器,则在会导致触发器激发的存储过程中设置断点,在触发器中设置断点,然后按演练:调试 Transact-SQL 存储过程中的说明继续操作。
本示例使用 AdventureWorks2008 数据库,该数据库具有带有 DELETE 触发器的 Purschasing.Vendor 表。该示例包括一个删除表中某行的存储过程,进而导致触发器激发。在触发器中设置断点,并使用不同参数来执行该存储过程,以便跟踪触发器中的不同执行路径。
提示
显示的对话框和菜单命令可能会与帮助中的描述不同,具体取决于您现用的设置或版本。若要更改设置,请在“工具”菜单上选择“导入和导出设置”。有关更多信息,请参见 Visual Studio Settings。
调试 SQL 触发器
在新的 SQL Server 项目中,建立一个到 AdventureWorks2008 示例数据库的连接。有关更多信息,请参见如何:使用服务器资源管理器连接到数据库。
使用下面第一个示例部分中的代码创建一个新的存储过程,并将其命名为 UpdateCurrency_T_SQL。有关更多信息,请参见如何:使用 SQL Server 数据库项目或服务器项目进行调试。
在 DeleteVendor 中设置断点。此操作是可选的,因为直接数据库调试会导致过程的第一行充当一个断点。
设置触发器的断点。
通过右击**“表”节点打开触发器源代码,接着右击“Purchasing.Vendor”表的节点,再双击名为“dVendor”**的触发器的图标。
左键单击 SET NOCOUNT ON 语句旁边的灰色空白处以设置触发器中的断点。此步骤是必需的:如果未在触发器中设置断点,则会在尝试单步执行该触发器时跳过其代码。
单步执行存储过程。有关更多信息,请参见如何:使用服务器资源管理器单步执行对象。
将出现**“运行存储过程”**对话框,询问参数值。
设置下列参数值:
@entityID = 1492
指令指针的黄色箭头出现在 SET NOCOUNT ON 行,即存储过程中代码的第一个可执行行。
尝试不同的调试功能。
使用 F11 键或**“单步执行”**按钮来逐句通过代码。
在 DELETE 语句处,再次按 F11 键时,将单步执行触发器。
逐句通过触发器,直到退回到存储过程后再持续到最后。
示例
这是导致触发器激发的存储过程的代码。
ALTER PROCEDURE dbo.DeleteVendor
(
@entityID int
)
AS
SET NOCOUNT ON
DELETE Purchasing.Vendor
WHERE BusinessEntityID = @entityID
RETURN