演练:调试 T-SQL 触发器
更新:2007 年 11 月
本主题适用于:
版本 |
Visual Basic |
C# |
C++ |
Web Developer |
---|---|---|---|---|
速成版 |
||||
标准版 |
||||
专业团队版 |
表格图例:
适用 |
|
不适用 |
|
默认情况下隐藏的一条或多条命令。 |
若要调试触发器,可以在将导致触发器激发的存储过程中设置一个断点,在触发器中设置一个断点,然后按照 演练:调试 T-SQL 存储过程 中的描述进行调试。
此示例使用 AdventureWorks 数据库,该数据库包含一个带有 UPDATE 触发器的 Sales.Currency 表。此示例包括一个更新表中某行的存储过程,从而导致触发器激发。在该触发器中设置断点,并通过使用不同的参数执行该存储过程,可以跟踪触发器中的不同执行路径。
说明: |
---|
显示的对话框和菜单命令可能会与“帮助”中的描述不同,具体取决于您的当前设置或版本。若要更改设置,请在“工具”菜单上选择“导入和导出设置”。有关更多信息,请参见 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