排查 Azure Synapse Analytics 中的专用 SQL 池(之前称为 SQL DW)

本文列出了 Azure Synapse Analytics 中的专用 SQL 池(以前称为 SQL DW)的常见故障排除问题。

连接

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

工具

问题 解决方法
Visual Studio 对象资源管理器缺少 Azure AD 用户 这是已知问题。 解决方法是在 sys.database_principals 中查看这些用户。 请参阅向 Azure Synapse 进行身份验证,详细了解如何将 Azure Active Directory 与专用 SQL 池(以前称为 SQL DW)配合使用。
使用脚本向导进行手动脚本编写或通过 SSMS 进行连接时出现缓慢、未响应或产生错误的情况 请确保已在 master 数据库中创建用户。 在脚本选项中,同时需确保引擎版本设置为“Microsoft Azure Synapse Analytics 版本”,且引擎类型为“Microsoft Azure SQL 数据库”。
在 SSMS 中生成脚本失败 如果将“为依赖对象生成脚本”选项设置为“True”,则为专用 SQL 池(以前称为 SQL DW)生成脚本会失败。解决方法是,用户必须手动转到“工具”->“选项”->“SQL Server 对象资源管理器”->“为依赖选项生成脚本”并设置为“False”

数据引入和准备

问题 解决方法
使用 CETAS 导出空字符串会导致 Parquet 和 ORC 文件中出现 NULL 值。 请注意,如果从具有 NOT NULL 约束的列中导出空字符串,CETAS 会导致记录被拒绝,并且导出可能会失败。 删除 CETAS 的 SELECT 语句中的空字符串或有问题的列。
不支持将 0-127 范围外的值加载到 Parquet 和 ORC 文件格式的 tinyint 列中。 为目标列指定较大的数据类型。

性能

问题 解决方法
查询性能故障排除 如果要尝试对特定查询进行故障排除,请从 Learning how to monitor your queries(学习如何监视查询)开始。
TempDB 空间问题 监视 TempDB 空间使用情况。 用尽 TempDB 空间的常见原因包括:
- 分配给查询的资源不足,从而导致数据溢出到 TempDB。 请参阅工作负荷管理
- 统计信息缺失或过期,从而导致数据移动过多。 有关如何创建统计信息的详细信息,请参阅维护表的统计信息
- TempDB 空间按服务级别进行分配。 将专用 SQL 池(以前称为 SQL DW)扩展到更高的 DWU 设置会分配更多的 TempDB 空间。
查询性能和计划不佳通常是由于缺少统计信息 性能不佳的最常见原因是缺少数据表的统计信息。 有关如何创建统计信息以及统计信息为何对性能至关重要的详细信息,请参阅维护表的统计信息
低并发性/查询排队 若要了解如何利用并发性平衡内存分配,了解工作负荷管理很重要。
如何通过缩放提高性能 有时,若要提高性能,只需通过缩放专用 SQL 池(以前称为 SQL DW)提高查询的计算能力即可。
由于索引质量不佳导致查询性能不佳 有时,由于列存储索引质量不佳,查询速度可能会减慢。 有关详细信息以及如何重建索引以提高段质量,请参阅本文。

系统管理

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

与 SQL 数据库的差异

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