更新:2007 年 11 月
本主题适用于:
| 版本 | Visual Basic | C# | C++ | Web Developer | 
|---|---|---|---|---|
| 速成版 | .gif) | .gif) | .gif) | .gif) | 
| 标准版 | .gif) | .gif) | .gif) | .gif) | 
| 专业团队版 | .gif) | .gif) | .gif) | .gif) | 
表格图例:
| .gif) | 适用 | 
| .gif) | 不适用 | 
| .gif) | 默认情况下隐藏的一条或多条命令。 | 
若要调试触发器,可以在将导致触发器激发的存储过程中设置一个断点,在触发器中设置一个断点,然后按照 演练:调试 T-SQL 存储过程 中的描述进行调试。
此示例使用 AdventureWorks 数据库,该数据库包含一个带有 UPDATE 触发器的 Sales.Currency 表。此示例包括一个更新表中某行的存储过程,从而导致触发器激发。在该触发器中设置断点,并通过使用不同的参数执行该存储过程,可以跟踪触发器中的不同执行路径。
| .gif) 说明: | 
|---|
| 显示的对话框和菜单命令可能会与“帮助”中的描述不同,具体取决于您的当前设置或版本。若要更改设置,请在“工具”菜单上选择“导入和导出设置”。有关更多信息,请参见 Visual Studio 设置。 | 
调试 SQL 触发器
- 在一个新的 SQL Server 项目中,建立一个到 AdventureWorks 示例数据库的连接。有关更多信息,请参见如何:连接到数据库。 
- 使用下面第一个示例部分中的代码创建一个新的存储过程,并将其命名为 UpdateCurrency_T_SQL。有关更多信息,请参见 如何:使用 SQL Server 项目类型进行开发。 
- 在 UpdateCurrency_T_SQL 中设置断点。这是可选步骤,因为直接数据库调试使过程的第一行代码的行为类似于设置了断点。 
- 设置触发器的断点。 - 通过以下方法打开触发器源代码:右击“表”节点,接着右击表示“Sales.Currency”表的节点,然后双击名为“uCurrency”的触发器的图标。 
- 左键单击 SET NOCOUNT ON 语句旁边的灰色空白处,在触发器中设置一个断点。此步骤是必需的:如果不在触发器中设置断点,则在尝试单步执行触发器时,会跳过触发器代码。 
 
- 单步执行该存储过程。有关更多信息,请参见 如何:使用服务器资源管理器单步执行对象。 - “运行存储过程”对话框随即出现,要求您输入参数值。 
- 请设置下列参数值: - @currencyCode = AAA 
- @name = 任意值(例如,“我的测试名称”)。 
 - 表示指令指针的黄色箭头出现在 SET @mynvarchar = @@VERSION 行,该行是存储过程中的第一个可执行代码行。 
- 尝试不同的调试功能。 - 使用 F11 键或“逐语句”按钮逐句通过代码。 - 到达 UPDATE 语句后,再次按下 F11 时,将会进入并单步执行该触发器。 
- 逐句通过该触发器,直到退出该触发器回到存储过程,然后继续执行直到结束。 
 
- 在“服务器资源管理器”中,可以通过右击“表”下的“Sales.Currency”节点,然后单击“显示表数据”来验证已插入的数据。 
示例
这是导致触发器激发的存储过程的代码。
ALTER PROCEDURE dbo.UpdateCurrency_T_SQL
    (
        @currencyCode   nvarchar(3),
        @Name           nvarchar(50)           
    )
AS
    SET NOCOUNT ON
    UPDATE Sales.Currency
    SET Name = @Name 
        WHERE CurrencyCode = @currencyCode 
    RETURN