虽然MSSQL2005可以在vs环境下进行存储过程的本地单步调试,但是对于非微软的开发环境和已经发布的数据库中很难进行单步调试,但是如果在MSSQL2005使用try-Catch可以大大简化存储过程的调试难度。
可以在数据库中建立一张存储过程的操作日志表
Create Table SP_TableName
(
ID uniqueidentifier,
ErrorNumber varchar(50),
ErrorSeverity varchar(50),
ErrorState varchar(50),
ErrorProcedure varchar(50),
ErrorLine varchar(50),
ErrorMessage varchar(50),
DT DateTime
)
列举如下
begin try
Insert Into TableName (Column1,Column2) Values(Value1,Value2); --被调试的执行内容
end try
begin
Insert Into SP_TableName
SELECT
NewID() AS ID, --错误流水
ERROR_NUMBER() AS ErrorNumber, --错误的行数
ERROR_SEVERITY() AS ErrorSeverity, --错误级别
ERROR_STATE() AS ErrorState, --错误状态号
ERROR_PROCEDURE() AS ErrorProcedure, --存储过程名称
ERROR_LINE() AS ErrorLine, --错误的行数
ERROR_MESSAGE() AS ErrorMessage, --错误消息
GetDate() AS DT --错误的时间
catch
end catch
在这里我只是简单描述了存储过程中运行错误日志记录的一个办法,如果可能还可以把存储过程的带入值做一个同步记录,这样的记录方式能更好的定位错误,已经问题发生的原因,大大简化了调试的复杂性。