【问题标题】:Severe error in Azure sql db using insert使用插入在 Azure sql db 中出现严重错误
【发布时间】:2020-09-19 15:38:28
【问题描述】:

在 Azure sql db 上的插入语句期间出现严重错误。所以我无法检查 SQL Server 日志。直到上周我还没有收到这个错误,所以我从那时起恢复了数据库,但没有运气。任何人都有关于如何查看确切错误的想法或信息?

完全错误: A severe error occurred on the current command. The results, if any, should be discarded.

INSERT INTO [Staging].[table] ([att1],[att2]) SELECT [att1], [att2] FROM [Staging].[vw_table]".

可能的失败原因:查询有问题、“ResultSet”属性设置不正确、参数设置不正确或连接未正确建立。

【问题讨论】:

  • 连接Master,可以试试运行select * from sys.event_log

标签: azure tsql azure-sql-database


【解决方案1】:

您应该会收到错误号 40540,该错误消息通常附带该错误消息,对于此错误,建议按照 this 文档中的说明实施重试逻辑。

您似乎正在使用 Azure SQL 数据库来执行通常与数据仓库的暂存区域相关的 ETL 工作负载,并且在使用较低层的 ETL 和高 I/O 使用率时,Azure SQL 数据库服务可能会受到限制。请运行以下查询,让我们尝试查找有关 Azure SQL 数据库受到限制的证据。

SELECT *
FROM sys.dm_db_resource_stats
ORDER BY end_time DESC;

如果您看到 avg_log_write_percent 接近或等于 100%,则需要扩展数据库层。在运行使用高级存储的 ETL 流程之前,您可以考虑扩展到高级层。当 ETL 过程完成后缩小。

门户上的 DTU 图呢?出现错误时请验证资源消耗是否达到限制。

控制节流和高 DTU 使用率的一种方法是使用批处理执行插入,如 here 所述。

【讨论】:

  • 感谢您的回复,我已经做了很多测试,并且确实可以扩展数据库。但不是每次。真正的诀窍是设置顺序加载而不是并行加载,即在 SSIS 中,我现在一个接一个地加载表,而不是一次加载 4 个表。奇怪的是,资源统计显示数据库没有真正的过载。我已经向 Microsoft 开具了支持票。
【解决方案2】:

Microsoft 回复任何感兴趣的人:

请在下面找到我们的调查结果。

  • 我们注意到 LOG% 经常达到 100%,这可能 导致您看到的错误。
  • 标准性能层数据库的 IO 少于高级版 性能层数据库。
  • 由于此工作负载达到最大日志 Standard S3/S4 的速率,建议使用 Premium。我会 建议尝试 P1/P2 服务层并与我们分享结果。

正如之前在评论中所说,当我将 SSIS 中的加载从并行更改为顺序时,错误也消失了。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-03-06
    • 1970-01-01
    • 2015-08-10
    • 1970-01-01
    • 2019-05-06
    • 1970-01-01
    • 1970-01-01
    • 2021-09-14
    相关资源
    最近更新 更多