排查仓库问题
适用于:✅Microsoft Fabric 中的仓库
本文提供有关排查 Microsoft Fabric 仓库中的常见问题的指南。
暂时性连接错误
暂时性错误(也称为暂时性故障)的根本原因很快就能自行解决。 如果与仓库的连接之前运行正常,但在没有更改用户权限、防火墙策略和网络配置的情况下开始失效,请在联系支持人员之前尝试以下步骤:
- 检查仓库的状态,并确保它未处于暂停状态。
- 不要立即重试失败的命令。 请等待 5 到 10 分钟,建立新连接,然后重试命令。 当 Azure 系统快速将硬件资源转移到负载均衡更好的各种工作负载时,偶尔会失败。 大多数这些重新配置事件在 60 秒内就能完成。 在进行这种重新配置的过程中,可能会在连接到你的数据库时遇到问题。 当服务自动重启以解决某些问题时,连接也可能会失败。
- 使用其他应用程序和/或从另一台计算机进行连接。
由于 tempdb 空间问题而导致查询失败
tempdb
是引擎在查询执行期间用于满足各种临时存储需求的系统数据库。 用户无法访问或配置它。 查询可能会因为运行 tempdb
的空间不足而失败。 执行以下步骤以减少 tempdb
空间使用量:
- 请参阅有关统计信息的文章,以验证是否已在所有表上创建了正确的列统计信息。
- 确保在大型 DML 事务后更新所有表统计信息。
- 具有复杂 JOIN、GROUP BY 和 ORDER BY 且预期返回大型结果集的查询在执行时会使用更多
tempdb
空间。 如果可能,请更新查询以减少 GROUP BY 和 ORDER BY 列的数量。 - 在没有运行其他活动查询时重新运行查询,以避免在查询执行期间受到资源约束。
查询性能似乎随时间推移而下降
许多因素可能会影响查询的性能,例如表大小、数据倾斜、工作负载并发性、可用资源、网络等。仅仅是查询运行速度较慢并不一定意味着存在查询性能问题。 执行以下步骤来调查目标查询:
- 确定良好和不良性能运行中所有影响性能的因素的差异。
- 请参阅有关统计信息的文章,以验证是否已在所有表上创建了正确的列统计信息。
- 确保在大型 DML 事务后更新所有表统计信息。
- 检查基表中的数据倾斜。
- 暂停并恢复服务。 然后,在没有运行其他活动查询时重新运行查询。 可以使用 DMV 监视仓库工作负载。
查询在长时间运行后失败。 未向客户端返回数据。
SELECT 语句可能在后端成功完成,但在尝试将查询结果集返回到客户端时失败。 可尝试使用以下步骤来辨别问题:
- 使用不同的客户端工具重新运行同一查询。
- SQL Server Management Studio (SSMS)
- Azure Data Studio
- Microsoft Fabric 门户中的 SQL 查询编辑器
- Microsoft Fabric 门户中的 Visual 查询编辑器
- SQLCMD 实用工具(用于通过 Microsoft Entra ID(前 Azure Active Directory)通用的 MFA 进行身份验证,请使用参数
-G -U
)
- 如果步骤 1 失败,请使用失败的 SELECT 语句运行 CTAS 命令,以将 SELECT 查询结果发送到同一仓库中的另一个表。 使用 CTAS 可避免将查询结果集发送回客户端计算机。 如果 CTAS 命令成功完成并填充了目标表,则原始查询失败可能是由仓库前端或客户端问题引起的。
联系 Microsoft 支持人员之前要收集的内容
- 提供 Warehouse 的工作区 ID。
- 提供语句 ID 和分布式请求 ID。 查询完成或失败后,它们将作为消息返回。
- 请提供错误消息的确切文本。
- 提供查询完成或失败的时间。