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