演练:调试 T-SQL 触发器

更新:2007 年 11 月

本主题适用于:

版本

Visual Basic

C#

C++

Web Developer

速成版

主题不适用 主题不适用 主题不适用 主题不适用

标准版

主题不适用 主题不适用 主题不适用 主题不适用

专业团队版

主题适用 主题适用 主题适用 主题适用

表格图例:

主题适用

适用

主题不适用

不适用

主题适用,但命令默认情况下隐藏

默认情况下隐藏的一条或多条命令。

若要调试触发器,可以在将导致触发器激发的存储过程中设置一个断点,在触发器中设置一个断点,然后按照 演练:调试 T-SQL 存储过程 中的描述进行调试。

此示例使用 AdventureWorks 数据库,该数据库包含一个带有 UPDATE 触发器的 Sales.Currency 表。此示例包括一个更新表中某行的存储过程,从而导致触发器激发。在该触发器中设置断点,并通过使用不同的参数执行该存储过程,可以跟踪触发器中的不同执行路径。

说明:

显示的对话框和菜单命令可能会与“帮助”中的描述不同,具体取决于您的当前设置或版本。若要更改设置,请在“工具”菜单上选择“导入和导出设置”。有关更多信息,请参见 Visual Studio 设置

调试 SQL 触发器

  1. 在一个新的 SQL Server 项目中,建立一个到 AdventureWorks 示例数据库的连接。有关更多信息,请参见如何:连接到数据库

  2. 使用下面第一个示例部分中的代码创建一个新的存储过程,并将其命名为 UpdateCurrency_T_SQL。有关更多信息,请参见 如何:使用 SQL Server 项目类型进行开发

  3. 在 UpdateCurrency_T_SQL 中设置断点。这是可选步骤,因为直接数据库调试使过程的第一行代码的行为类似于设置了断点。

  4. 设置触发器的断点。

    1. 通过以下方法打开触发器源代码:右击“表”节点,接着右击表示“Sales.Currency”表的节点,然后双击名为“uCurrency”的触发器的图标。

    2. 左键单击 SET NOCOUNT ON 语句旁边的灰色空白处,在触发器中设置一个断点。此步骤是必需的:如果不在触发器中设置断点,则在尝试单步执行触发器时,会跳过触发器代码。

  5. 单步执行该存储过程。有关更多信息,请参见 如何:使用服务器资源管理器单步执行对象

    “运行存储过程”对话框随即出现,要求您输入参数值。

  6. 请设置下列参数值:

    1. @currencyCode = AAA

    2. @name = 任意值(例如,“我的测试名称”)。

    表示指令指针的黄色箭头出现在 SET @mynvarchar = @@VERSION 行,该行是存储过程中的第一个可执行代码行。

  7. 尝试不同的调试功能。

    1. 使用 F11 键或“逐语句”按钮逐句通过代码。

      到达 UPDATE 语句后,再次按下 F11 时,将会进入并单步执行该触发器。

    2. 逐句通过该触发器,直到退出该触发器回到存储过程,然后继续执行直到结束。

  8. 在“服务器资源管理器”中,可以通过右击“表”下的“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

请参见

概念

调试 SQL

参考

服务器资源管理器/数据库资源管理器