7

偶尔我的代码会遇到

System.Data.SqlClient.SqlException
The service has encountered an error processing your request. Please try again.
Error code 40540. A severe error occurred on the current command.
The results, if any, should be discarded.
Class 20
Number 40197

这种情况很少发生,通常在一两分钟内消失,我无法可靠地重现它。有时Error code可以是 以外的数字40540

我用谷歌搜索了一下,看起来它通常是由 SQL Server 中的错误触发的,并且是可重现的。

我有两个选择 - 重试查询或将其视为致命并努力破解。我希望更好地了解问题实际上是什么,以及我是否可以安全地重试查询。

发生此错误时是否重试查询?

4

2 回答 2

6

一个快速的谷歌搜索给了我这个。

服务在处理您的请求时遇到错误。请再试一次。错误代码 %d。当服务因软件或硬件升级、硬件故障或任何其他故障转移问题而关闭时,您将收到此错误。重新连接到您的 SQL 数据库服务器将自动将您连接到数据库的健康副本。您可能会看到错误代码 40143 和 40166 嵌入在错误 40540 的消息中。错误代码 40143 和 40166 提供了有关发生的故障转移类型的其他信息。不要修改您的应用程序以捕获错误代码 40143 和 40166。您的应用程序应捕获 40540 并尝试重新连接到 SQL 数据库,直到资源可用并再次建立连接。

您可以访问此处了解更多信息。它说您的应用程序应该捕获 40540 并尝试重新连接到 SQL 数据库,直到资源可用并再次建立连接。

尽管就个人而言,我建议不要使用 Sql azure,因为它很容易节流,并且您无法控制分配给您的资源。我所做的是在 azure vm 上安装 sql server 并在我的应用程序中使用它。

希望这对您有所帮助。

于 2013-02-11T13:29:27.343 回答
1

我遇到了类似的错误:我遵循了http://social.msdn.microsoft.com/Forums/en-US/bbe589f8-e0eb-402e-b374-dbc74a089afc/severe-error-in-current-command-during中的答案-datareaderread解决了这个问题..

避开looping读者;将数据加载到DataTable

DataTable table = new DataTable();
table.Load(reader);
reader.Close();
于 2013-12-10T16:02:03.103 回答