我需要在 Sql Server 上模拟错误:
“Msg 0, Level 20 A severe error occurred on the current command”
因为我们的开发人员必须在应用程序中处理它。
如何模拟/触发这种错误?(我也可以在我的本地主机上尝试)。
我需要在 Sql Server 上模拟错误:
“Msg 0, Level 20 A severe error occurred on the current command”
因为我们的开发人员必须在应用程序中处理它。
如何模拟/触发这种错误?(我也可以在我的本地主机上尝试)。
此错误由客户端 API(而不是 SQL Server)返回,当发生诸如访问冲突或关闭服务器端连接等不良事件时。这就是为什么消息 id 为零而不是
sys.messages
. ` Erland Sommarskog 在他的文章中称这是一个错误的错误信息。RAISERROR
严重性为 20(需要WITH LOG
sysadmin 或更改跟踪权限)可能能够模拟错误,具体取决于您使用的客户端 API。运行以下命令后,我在 SSMS(使用 .NET 框架 SqlClient API)中看到错误以及其他错误消息。请注意,SQL 异常可能会生成多条错误消息,包括这条错误消息,因此您需要检查为感兴趣的错误返回的错误。您应该能够使用 RAISERROR 或 THROW。这里有一个现有的帖子,讨论了每个帖子的差异。但是,您无法使用这些生成 Msg 0,因此我不确定您能否从中获得所需的确切结果。以下是有关每个命令的更多文档。
提升错误
MS Docs - RAISERROR
扔
MS Docs - 扔
但是,与其关注确切的错误消息,我会让您的开发团队确保他们通常正确地接受所有 SQL 错误。如果他们能够正确捕获返回的 SQL 错误,那么他们应该很容易确定如何处理每个唯一错误,例如这个错误。在这种情况下,只需生成您想要的任何 SQL 错误,并让他们向您展示他们捕获的消息,正如您所期望的那样。
问题中的特定错误仅由服务器上的异常(产品错误)引起,因此很难准确模拟。