排查 Azure SQL 数据仓库问题

本文列出了常见的故障排除问题。

连接

问题 解决方法
用户 “NT AUTHORITY\ANONYMOUS LOGON” 登录失败。 (Microsoft SQL Server,错误: 18456) 当 AAD 用户尝试连接到 master 数据库,但 master 中没有用户时,会发生此错误。 若要纠正此问题,可以在连接时指定要连接到的 SQL 数据仓库,也可以将用户添加到 master 数据库。 有关详细信息,请参阅 Security overview (安全概述)一文。
服务器主体“MyUserName”无法在当前的安全上下文下访问数据库“master”。 无法打开用户默认数据库。 登录失败。 用户“MyUserName”的登录失败。 (Microsoft SQL Server,错误: 916) 当 AAD 用户尝试连接到 master 数据库,但 master 中没有用户时,会发生此错误。 若要纠正此问题,可以在连接时指定要连接到的 SQL 数据仓库,也可以将用户添加到 master 数据库。 有关详细信息,请参阅 Security overview (安全概述)一文。
CTAIP 错误 当登录名已在 SQL Server master 数据库中创建,但未在 SQL 数据仓库数据库中时,可能会出现此错误。 如果遇到此错误,请参阅安全性概述 一文。 本文介绍如何在 master 中创建登录名和用户,以及如何在 SQL 数据仓库数据库中创建用户。
被防火墙阻止 为了确保只有已知的 IP 地址可以访问数据库,Azure SQL 数据库受到服务器和数据库级别的防火墙保护。 默认情况下,防火墙是安全的,这意味着,需要显式启用单个 IP 地址或地址范围才能进行连接。 若要配置用于访问的防火墙,请遵循设置说明中的为客户端 IP 配置服务器防火墙访问中的步骤。
无法使用工具或驱动程序进行连接 SQL 数据仓库建议使用 SSMS用于 Visual Studio 的 SSDTsqlcmd 来查询数据。 如需详细了解驱动程序以及如何连接到 SQL 数据仓库,请参阅 Azure SQL 数据仓库驱动程序连接到 Azure SQL 数据仓库这两篇文章。

工具

问题 解决方法
Visual Studio 对象资源管理器缺少 AAD 用户 这是已知问题。 解决方法是在 sys.database_principals 中查看这些用户。 要了解有关将 Azure Active Directory 用于 SQL 数据仓库的详细信息,请参阅向 Azure SQL 数据仓库进行身份验证
使用脚本向导进行手动脚本编写或通过 SSMS 进行连接时出现缓慢、挂起或产生错误的情况 请确保已在 master 数据库中创建用户。 在脚本选项中,同时需确保引擎版本设置为“Azure SQL 数据仓库版本”,且引擎类型为“Azure SQL 数据库”。

性能

问题 解决方法
查询性能故障排除 如果要尝试对特定查询进行故障排除,请从 Learning how to monitor your queries(学习如何监视查询)开始。
查询性能和计划不佳通常是由于缺少统计信息 性能不佳的最常见原因是缺少数据表的统计信息。 有关如何创建统计信息以及统计信息为何对性能至关重要的详细信息,请参阅 维护表的统计信息
低并发性/查询排队 若要了解如何利用并发性平衡内存分配,了解 工作负荷管理 很重要。
如何实施最佳做法 开始了解如何提高查询性能的最好地方是 SQL 数据仓库最佳实践 一文。
如何通过缩放提高性能 有时,改进性能的解决方案是只需通过 缩放 SQL 数据仓库来提升计算能力。
由于索引质量不佳导致查询性能不佳 有时,由于列存储索引质量不佳,查询速度可能会减慢。 有关详细信息以及如何 重建索引以提高段质量,请参阅本文。

系统管理

问题 解决方法
消息 40847:无法执行操作,因为服务器将超过 45000 这一允许的数据库事务单元配额。 请减少要尝试创建的数据库的 DWU,或者请求增加配额
调查空间使用率 请参阅 表大小 ,了解系统的空间使用率。
管理表的帮助 有关管理表的帮助,请参阅表概述一文。 本文还包含指向更详细主题的链接,如表数据类型分布表为表编制索引将表分区维护表统计信息临时表
在 Azure 门户中,透明数据加密 (TDE) 进度栏不更新 可以通过 powershell 查看 TDE 的状态。

Polybase

问题 解决方法
由于行大加载失败 目前 Polybase 不提供大型行支持。 这意味着,如果你的表包含 VARCHAR(MAX)、NVARCHAR(MAX) 或 VARBINARY(MAX),则无法使用外部表加载数据。 目前仅支持通过 Azure 数据工厂(带 BCP)、Azure 流分析、SSIS、BCP 或 .NET SQLBulkCopy 类加载大型行。 未来版本会添加对大型行的 PolyBase 支持。
使用 bcp 加载包含 MAX 数据类型的表失败 有一个已知问题,它要求在某些情况下将 VARCHAR(MAX)、NVARCHAR(MAX) 或 VARBINARY(MAX) 放置在表的末尾。 请尝试将 MAX 列移到表的末尾。

与 SQL 数据库的差异

问题 解决方法
不支持的 SQL 数据库功能 请参阅 不支持的表功能
不支持的 SQL 数据库数据类型 请参阅 不支持的数据类型
DELETE 和 UPDATE 限制 请参阅 UPDATE 解决方法DELETE 解决方法使用 CTAS 解决不支持的 UPDATE 和 DELETE 语法
不支持 MERGE 语句 请参阅 MERGE 解决方法
存储过程限制 请参阅 存储过程限制 ,了解存储过程的一些限制。
UDF 不支持 SELECT 语句 这是 UDF 的当前一项限制。 有关我们支持的语法,请参阅 CREATE FUNCTION

后续步骤

如需查找问题的解决方案的更多帮助,下面是可以尝试的一些其他资源。