gpt4 book ai didi

sql-server - 您能否捕获错误消息中的错误T-SQL

转载 作者:行者123 更新时间:2023-12-03 08:29:00 26 4
gpt4 key购买 nike

如果我运行如下的sql语句:

SELECT 1/0;

有没有办法捕获语句“SELECT 1/0;”。在错误消息中?以下内容不提供失败的SQL:

开始尝试
选择1/0;
结束尝试
开始比赛
选择
ERROR_NUMBER()AS错误号,
ERROR_SEVERITY()AS ErrorSeverity,
ERROR_STATE()AS错误状态,
ERROR_PROCEDURE()AS ErrorProcedure,
ERROR_LINE()AS错误线,
ERROR_MESSAGE()AS ErrorMessage;
结束观看;


另外,我想看看是否可以避免在每个语句中使用try catch。我有一个在TRY和CATCH语句之间执行许多SQL语句的SP。我想知道TRY ... CATCH块中众多SQL语句中哪个SQL语句失败。

到目前为止,我所发现的只是提供错误消息的详细信息,而不是失败的T-SQL。

最佳答案

您可以利用表变量不会回滚的事实。
在每个步骤之后,将成功行插入到表变量中以进行记录。

如果proc成功,则不需要从表变量返回任何内容。但是,如果碰到了catch块,则可以回滚事务,然后重新运行table变量中的select或更佳的选择,然后将该信息插入到日志表中。如果您的proc设置了很多变量,我也将这些值记录在此表中,以便您可以查看proc失败时的值。通过将其放入日志记录表,您会在proc失败的所有时间都有一条记录,因此,如果它在星期五晚上失败并且多次失败,但在周末并非每次都失败,那么您将获得有关什么有效以及哪些变量的数据是在无法理解正在发生的事情的时候。如果您使用动态sql,这尤其有用,因为您也可以记录生成的sql语句。

关于sql-server - 您能否捕获错误消息中的错误T-SQL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31324830/

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