gpt4 book ai didi

sql - 如何从 SQL Server 中的 try/catch 子句中获取内部错误

转载 作者:行者123 更新时间:2023-12-04 21:09:18 31 4
gpt4 key购买 nike

我在 SQL Server 2008 中的 try/catch 中运行存储过程。存储过程和它调用的存储过程会引发一些错误,但在 try/catch 中,您只能从正在运行的存储过程中获得最后一个错误。

有没有办法/技巧能够在运行特定存储过程时以某种方式捕获子存储过程调用生成的所有错误? (假设您无权访问任何存储过程,因此您无法修改它们可以写入错误的位置,即您不能只是更改所有存储过程以停止引发错误,而是将它们写入某个表并在您的捕获中从该表中读取)

最佳答案

这是关于如何处理 SQL Server 中的错误处理的好资源。
http://www.sqlservercentral.com/articles/Development/anerrorhandlingtemplatefor2005/2295/

但是,有些方法要求您能够更改代码以捕获错误。真的没有办法解决这个问题。你不能只是忽略错误,继续处理,然后再回来处理错误。在大多数(如果不是全部)语言中,必须在引发异常时处理异常。 T-SQL 也不异常(exception)。

我个人使用存储过程来记录任何发生的错误。这是我使用的:

CREATE PROCEDURE [dbo].[Error_Handler]
@returnMessage bit = 'False'
WITH EXEC AS CALLER
AS
BEGIN

INSERT INTO Errors (Number,Severity,State,[Procedure],Line,[Message])
VALUES (
ERROR_NUMBER(),
ERROR_SEVERITY(),
ERROR_STATE(),
isnull(ERROR_PROCEDURE(),'Ad-Hoc Query'),
isnull(ERROR_LINE(),0),
ERROR_MESSAGE())

IF(@returnMessage = 'True')
BEGIN
select Number,Severity,State,[Procedure],Line,[Message]
from Errors
where ErrorID = scope_identity()
END
END

关于sql - 如何从 SQL Server 中的 try/catch 子句中获取内部错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6916605/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com