1、 昨天晚上我找遍了互联网也没有发现关于 SQL2005 存储过程和触发器的调试方法,研究到凌晨 2 点多钟,终于找到方法了,不干独享,拿出来分享。如果要转载,请保留版权,谢谢!在 SQL2000 中,我们想要调试存储过程非常简单,只需要在对象浏览器中找到存储过程,然后点击鼠标右键选择“执行(调试)” 就可以弹出一个工具栏出来,进行调试。然而到了 SQL2005 中同样的操作却变成了生成一段 SQL 语法,没有调试功能,如果使用了Express 版本会更加郁闷,连“执行” 菜单都没有,如图所示:Express 版本中,菜单中根本没有“执行” 功能。那么调试功能到什么地方去了呢?别急,我找到了。原
2、来微软把调试功能放在了 VS2005 中了。注意是 VS2005,不是SQL2005,打开 VS2005,选择工具、再选择 “连接到数据库 ”。选择正确的数据库名和表名,填入正确的登陆信息就可以了,如图:在“服务器资源管理“就可以看到写在数据库中的存储过程和触发器代码了,右击相应的存储过程,便可以看见”单步执行调试 “的字样如图所示:如果这段存储过程可以触发 ”触发器“中代码,那么触发器的代码也是可以调试的。我来举个例子调试一下。1、在数据中建立一个表 AllMoney列 ID 类型 INT ,该字段为自增字段,每插入一条数据就增加一个。列 MyMoney 类型 Money2、在数据中建立一个
3、表 LastID列 ALLMoneyID 类型为 INT,该字段将通过触发起自动更新值,当表 AllMoney 每插入一列的时候,这个字段就自动更新为 AllMoney 中的最大 ID 值。3、建立存储过程给 AllMoney 添加数据:SET ANSI_NULLS ONGOSET QUOTED_IDENTIFIER ONGOCREATE PROCEDURE SP_InsertMoneyMyMoney AS MONEYASBEGINSET NOCOUNT ON;INSERT INTO AllMoney(MyMoney) VALUES(MyMoney)ENDGO4、在表 AllMoney 中建立
4、触发器,更新表 LastIDSET ANSI_NULLS ONGOSET QUOTED_IDENTIFIER ONGOCREATE TRIGGER INSERT_LastIDON AllMoneyAFTER INSERTAS BEGINSET NOCOUNT ONDECLARE ID AS INTSELECT ID = MAX(ID) FROM AllMoney UPDATE LastID SET AllMoneyID=IDENDGO当上面两个添加好后,然后再 VS 中来调试。首先打开触发器代码。并设置断点:然后选择存储过程,点击右键选择单步调试存储过程。在弹出的对话框填入正确的参数:这是就可以按 F10 来进行调试了,当数据插入成功后,就会触发 ”触发器“代码,前面我们在触发器中设置断点就会断下来了,如图:还可以看见变量的值,很不错吧!