【问题标题】:What does "A severe error occurred on the current command. The results, if any, should be discarded." SQL Azure error mean?“当前命令发生严重错误。结果(如果有)应丢弃。”是什么意思? SQL Azure 错误是什么意思?
【发布时间】:2013-02-11 08:47:22
【问题描述】:

我的代码偶尔会遇到

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 中的错误触发的,并且是可重现的。

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

出现此错误时是否重试查询?

【问题讨论】:

    标签: .net sql-server-2008 azure azure-sql-database


    【解决方案1】:

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

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

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

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

    希望对你有所帮助。

    【讨论】:

    • 我已经使用 SQL Azure 很多,没有任何问题。但是如果你像使用 SQL Server 一样使用它,你就会遇到问题。
    • 您能否详细说明一下。没看懂你说的好像和SQL Server一样是什么意思?
    • SQL Azure 是为横向扩展而不是纵向扩展而设计的。 SQL Azure 数据库不在高端服务器上运行,而是在与其他用户共享的虚拟机上运行。因此,使用 SQL Server,您可以在其上触发数千个查询,通常不会出现问题,而使用 SQL Azure,您不应该这样做。您需要将负载分布在多个数据库上以使其扩展。对命令使用重试。使用缓存,因此您无需访问数据库或尽可能使用表/Blob 存储。 Stack Overflow 等大型 SQL 网站使用的所有类型的优化现在都适用于所有人。
    • 你说的都很好,但你写密集型应用是为了什么?我可以缓存查询结果,但我必须访问数据库才能发出写入。
    • @gaurav 你可以试试 Cassandra 吗?有关更多详细信息,请参阅此内容:datastax.com/docs/0.8/dml/about_writes“Cassandra 针对非常快速和高可用性的数据写入进行了优化。”
    【解决方案2】:

    我遇到了类似的错误:我按照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();
    

    【讨论】:

      猜你喜欢
      • 2012-05-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-11-02
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多