如何在管理工作室中调试长脚本?
我有一个很长的T-SQL脚本,它是一个单批,像如何在管理工作室中调试长脚本?
DECLARE variables
select into temptable...
cursor...
insert...
update..
的东西,因为我运行脚本我有
(1 row(s) affected)
(5 row(s) affected)
[...]
ERROR
(2 row(s) affected)
etc...
我想运行步步脚本来识别哪个命令会产生错误,是否可以在Management Studio中使用Visual Studio?
你可以建议我哪个其他技巧?我无法一次运行一段代码,因为我会失去临时变量。
注意:当然最好不要用这种方式编写脚本,但是我发现了这个,我想解决这个问题。
在Sql Server Management Studio 2008中,您可以以非常类似于Visual Studio的方式进行调试。只需在要调试的行上设置一个断点,然后单击调试按钮(alt-F5)即可。这将从第一行开始调试。再次点击调试(播放)按钮,它将运行到您设置断点的代码行。希望这可以帮助。
这个答案迷失在所有我的问题的答案。但哇!这正是我想要做的!非常感谢! – LaBracca 2010-11-22 10:51:14
你正在运行哪个版本的SQL服务器?
根据错误的严重程度,您可以尝试捕捉错误的另一个妙用技巧是在TRY/CATCH块中包装所有可疑的东西。
首先创建一个表是这样的...
CREATE TABLE [dbo].[ERROR_LOGGING](
[ErrorNumber] [int] NULL,
[ErrorSeverity] [int] NULL,
[ErrorState] [int] NULL,
[ErrorProcedure] [nvarchar](128) NULL,
[ErrorLine] [int] NULL,
[ErrorMessage] [nvarchar](4000) NULL,
[UpdateStamp] [datetime] NULL DEFAULT (getdate())
) ON [PRIMARY]
然后把你的代码在一个try/catch块。
BEGIN TRY
--Code---
END TRY
BEGIN CATCH
INSERT INTO ERROR_LOGGING (
errornumber,
errorseverity,
errorstate,
errorprocedure,
errorline,
errormessage,
updatestamp)
VALUES (
ERROR_NUMBER(),
ERROR_SEVERITY(),
ERROR_STATE(),
ERROR_PROCEDURE(),
ERROR_LINE(),
ERROR_MESSAGE(),
getdate())
END CATCH;
这将捕获超过严重级别为16的任何错误,并将它们插入到第一步中创建的表中。
请注意,try/catch块不会捕获低级错误。
我已经看到它在源或目标表中的数据与预期的不同,即奇怪的字符,文本而不是整数等等的几次。如果你仍然无法破解它运行一个sql server分析器在您运行程序时跟踪数据库。
不应该花很长时间才能找到问题。我不会介绍如何使用SQL Server Profiler,因为您只需要进行快速的网络搜索即可找到数百个详细指南。
如果你双击错误消息,它不会带你到问题陈述? – 2010-10-12 09:08:00
啊好,我不知道这个。谢谢。 – LaBracca 2010-10-12 12:42:59