你正在运行哪个版本的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