Compartilhar via

Azure Synapse Analytics 已知问题

本页列出了 Azure Synapse Analytics 中的已知问题及其解决日期或可能的解决方法。 在提交 an Azure support 请求之前,请查看此列表以查看你遇到的问题是否已已知并正在解决。

若要了解有关 Azure Synapse Analytics 的详细信息,请参阅 Azure Synapse Analytics 概述 Azure Synapse Analytics?

当前已知问题

Azure Synapse组件 状态 问题
Azure Synapse专用 SQL 池 数据工厂复制命令失败,出现错误“由于 I/O 设备错误,无法执行请求” 具有解决方法
Azure Synapse专用 SQL 池 使用托管标识时,COPY INTO 语句失败,出现错误“发生导致此操作失败的内部 DMS 错误。” 具有解决方法
Azure Synapse专用 SQL 池 客户无法使用指标监视其专用 SQL 池的使用情况 具有解决方法
Azure Synapse专用 SQL 池 使用 AUTO_CREATE_TABLE='ON' 将 parquet 文件引入到表中时查询失败 具有解决方法
Azure Synapse专用 SQL 池 查询失败并出现数据外泄错误 具有解决方法
Azure Synapse专用 SQL 池 UPDATE STATISTICS 语句失败,并出现错误:“提供的统计信息流已损坏。” 具有解决方法
Azure Synapse专用 SQL 池 在 ARM 部署中启用 TDE 网关超时 具有解决方法
Azure Synapse专用 SQL 池 代理连接可能受网关影响,导致连接失败 无解决方法
Azure Synapse无服务器 SQL 池 从无服务器 SQL 池查询 Azure Cosmos DB 分析存储的故障 具有解决方法
Azure Synapse无服务器 SQL 池 Azure Cosmos DB 分析存储视图在列中传播错误的属性 具有解决方法
Azure Synapse无服务器 SQL 池 无服务器 SQL 池中的查询失败 具有解决方法
Azure Synapse无服务器 SQL 池 存储访问问题由于授权标头过长导致 具有解决方法
Azure Synapse无服务器 SQL 池 查询视图显示意外结果 具有解决方法
Azure Synapse无服务器 SQL 池 超过 7,500 个字符的查询可能不会显示在 Log Analytics 中 具有解决方法
Azure Synapse工作区 用户分配的托管标识(UAMI)的Blob存储链接服务未显示 具有解决方法
Azure Synapse工作区 删除 Synapse 工作区失败 & 无法删除虚拟网络 具有解决方法
Azure Synapse工作区 用于更新网络设置的 REST API PUT 操作或 ARM/Bicep 模板失败 具有解决方法
Azure Synapse工作区 标记值中包含方括号 [] 的已知问题 具有解决方法
Azure Synapse工作区 没有专用于 GET 设置的 Microsoft.Synapse/workspaces/trustedServiceBypassEnabled API 操作 具有解决方法

Azure Synapse Analytics 专用 SQL 池当前已知问题的摘要

数据工厂复制命令失败,出现错误“由于 I/O 设备错误,无法执行请求”

Azure Data Factory 管道使用 COPY INTO Transact-SQL 语句将数据大规模引入专用 SQL 池表。 在某些情况下,在Azure Data Factory管道中使用文件拆分时,将 CSV 文件加载到专用 SQL 池表中时,COPY INTO 语句可能会失败。 文件拆分是一种机制,在单个复制任务中加载几个更大的(1 GB+)文件时,可提高加载性能。 启用文件拆分后,多个并行线程可以加载单个文件,其中每个线程处理文件的一部分。

Workaround:受影响的客户应禁用Azure Data Factory中的文件拆分。

使用托管标识时,COPY INTO 语句失败,出现错误“发生导致此操作失败的内部 DMS 错误。”

使用托管标识执行 COPY INTO 命令时,语句在长时间运行的查询后可能会失败,并显示错误消息“发生一个内部 DMS 错误,导致此操作失败”。

Workaround:受影响的客户可以为存储帐户使用替代的身份验证方法,例如共享访问密钥。

客户无法使用指标监视其专用 SQL 池的使用情况

我们的遥测排放逻辑的内部升级旨在增强我们遥测数据的性能和可靠性,但导致了一个意外问题,影响了某些客户监控其专用 SQL 池、tempdb和数据仓库数据 IO 指标的能力。

解决方法:在确定问题后,我们的团队已采取措施确定根本原因并更新系统中的配置。 客户可以通过暂停并恢复实例来解决此问题,从而还原实例的正常状态和遥测数据流。

使用 AUTO_CREATE_TABLE='ON' 将 parquet 文件引入到表中时查询失败

尝试使用 AUTO_CREATE_TABLE='ON' 将 parquet 文件引入到哈希分布式表中的用户可能会收到以下错误:

COPY statement using Parquet and auto create table enabled currently cannot load into hash-distributed tables

不支持使用 AUTO_CREATE_TABLE 自动创建的哈希分布式表引入。 以前使用此不受支持的方案加载数据的客户应使用 CREATE TABLE AS SELECT (CTAS) 将数据复制到新表中并替换旧表。

查询失败并出现数据外泄错误

从现有专用 SQL 池创建的 Synapse 工作区报告与数据外泄保护相关的查询失败并显示常规性的错误消息,而数据外泄保护在 Synapse Analytics 中已关闭:

Data exfiltration to '{****}' is blocked. Add destination to allowed list for data exfiltration and try again.

Workaround:如果遇到类似的错误,请联系Azure Support团队寻求帮助。

UPDATE STATISTICS 失败

执行 UPDATE STATISTICS 语句时,一些专用 SQL 池可能会遇到异常。 该命令会生成消息“提供的统计信息流已损坏”,并且无法更新统计信息。

向表添加新约束时,将会在分布中创建相关统计信息。 如果表上还创建了聚集索引,则它必须包含与约束相同的列(顺序相同),否则对这些列执行 UPDATE STATISTICS 命令可能会失败。

解决方法:确定表上是否存在约束和聚集索引。 如果是,则删除约束和聚集索引。 之后,重新创建聚集索引,然后重新创建约束确保两者在同一顺序中包含相同的列。 如果表没有约束和聚集索引,或者步骤导致相同的错误,请联系Azure Support团队寻求帮助。

在 ARM 部署中启用 TDE 网关超时

更新 TDE(透明数据加密)在内部实现为同步操作,该操作受超时限制,可能会超时。 尽管已超时,但在大多数情况下,TDE操作在后台成功完成,但这会导致 ARM 模板中的后续操作被拒绝。

解决方法:有两种方法可以缓解此问题。 首选选项是将 ARM 模板拆分为多个模板,以便其中一个模板包含 TDE 更新。 该操作减少了出现超时的可能性。另一种选择是在几分钟后重试部署。 在等待期间,TDE 更新操作很有可能成功,第二次重新部署模板可能会执行先前被拒绝的操作。

标记更新似乎失败

通过Azure portal或其他方法更改专用 SQL 池的 tags 时,即使更改成功,也会显示错误消息。

解决方法:可以确认对标记的更改是否已成功,并根据需要忽略/禁止显示错误消息。

通过代理连接可能会因网关问题而失败

从Azure网络边界外部建立连接时,所有连接都根据 Synapse Workspaces 的默认 Connection 策略通过网关进行代理。 在 Synapse 工作区中使用专用终结点时,会应用相同的方法。 由于此策略,这可能会导致与专用池通信时延迟增加和吞吐量降低,并受到网关中断的影响。

解决方法:目前方案没有解决方法。

Azure Synapse工作区活动已知问题摘要

下面是 Synapse 工作区的已知问题。

未列出使用用户分配托管标识(UAMI)的Blob存储链接服务。

链接服务在配置 Azure Synapse Analytics 中的 Azure Blob Storage 服务为使用“用户分配的托管标识”身份验证后,可能无法显示在 Data Hub ->Linked ->Azure Blob Storage 中。

解决方法:工程团队目前已意识到此行为,正在着手修复。 替代方法是使用“系统分配的托管标识”身份验证方法而不使用“用户分配的托管标识”。

未能删除 Synapse 工作区和无法删除虚拟网络

删除 Synapse 工作区失败并显示错误消息:

Failed to delete Synapse workspace '[Workspace Name]'. Unable to delete virtual network. The correlationId is ********-****-****-****-************;

解决方法:可以通过重试删除操作来缓解此问题。 工程团队已意识到此行为,正在着手修复。

用于更新网络设置的 REST API PUT 操作或 ARM/Bicep 模板失败

使用 ARM 模板、Bicep 文件或直接执行 REST API PUT 操作用于更改 Synapse 工作区的公用网络访问设置和/或防火墙规则时,该操作可能会失败。

Workaround:可以通过使用 REST API PATCH 操作或 Azure portal UI 来减轻此问题,具体方法是反向操作并重试所需的配置更改。 工程团队已意识到此行为,正在着手修复。

在标记值中加入方括号 [] 时的已知问题

在Azure Synapse工作区中更新标记的值时,包含方括号([])会导致更新操作失败。

Workaround:当前解决方法是避免在工作区标记值 Azure Synapse中使用方括号([])。

没有专用于“Microsoft.Synapse/workspaces/trustedServiceBypassEnabled”设置的“GET”API 操作

Issue Summary: 在 Azure Synapse Analytics 中,没有用于检索资源范围“Microsoft.Synapse/workspaces/trustedServiceBypassEnabled”中“trustedServiceBypassEnabled”设置的状态的专用“GET”API操作。 虽然用户可以设置此配置,但他们无法通过此特定资源范围直接检索其状态。

Impact:此限制会影响Azure Policy定义,因为它们无法强制实施“trustedServiceBypassEnabled”设置的特定状态。 客户无法使用Azure Policy拒绝或管理此配置。

Workaround: Azure Policy中没有解决方法可以强制实施此属性的所需配置状态。 但是,用户可以使用“GET”工作区操作来审核配置状态以用于报告目的。
此“GET”工作区操作映射到 Azure 策略别名 “Microsoft.Synapse/workspaces/trustedServiceBypassEnabled”。

如果执行针对 Microsoft.Synapse/workspace 资源的 PUT 请求,可以使用 Azure 策略别名及 Deny Azure 策略效果来管理此属性;但是,仅在 PUT 请求直接发送到 Microsoft.Synapse/workspaces/trustedServiceByPassConfiguration 子资源时,它才可用于审核目的。 父资源包含一个属性 [properties.trustedServiceBypassEnabled],用于映射子资源的配置,因此仍可以通过父资源的 Azure Policy 别名进行审计。

由于 Microsoft.Synapse/workspaces/trustedServiceByPassConfiguration 子资源没有可用的 GET作,Azure Policy无法管理这些请求,并且Azure Policy无法为其生成Azure Policy别名。

父资源:Microsoft.Synapse/workspaces

子资源:Microsoft.Synapse/workspaces/trustedServiceByPassConfiguration

Azure portal 直接向子资源的 PUT API 发出 PUT 请求,因此 Azure portal 以及任何在父 Microsoft.Synapse/workspaces API 之外发出的其他 API 请求,无法通过 Azure Policy 的 Deny 或其他可执行的 Azure Policy 效果进行管理。

Azure Synapse Analytics 无服务器 SQL 池活动已知问题摘要

从无服务器 SQL 池向 Azure Cosmos DB 分析存储执行查询时出现失败

从无服务器 SQL 池到 Azure Cosmos DB 分析存储的查询可能会失败,并出现以下错误消息之一:

  • Resolving CosmosDB path has failed with error 'This request is not authorized to perform this operation'
  • Resolving CosmosDB path has failed with error 'Key not found'

若要确认此问题,必须满足以下条件:

  1. 与 Azure Cosmos DB 分析存储的连接使用专用终结点。
  2. 重试查询成功。

解决方法:工程团队已意识到此行为,可能采取以下措施作为快速缓解措施:

  1. 重试失败的查询。 它会自动刷新过期的令牌。
  2. 禁用专用终结点。 在应用此更改之前,请与安全团队确认它符合公司安全策略。

Azure Cosmos DB 分析存储视图传播列中的错误属性

在 Cosmos DB 分析存储上使用 Azure Synapse 无服务器池的视图时,如果 Cosmos DB 分析存储中的文件发生更改,则该更改不会正确传播到客户在视图中使用的 SELECT 语句中。 因此,属性会错误地映射到结果中的另一列。

解决方法:工程团队已意识到此行为,可能采取以下措施作为快速缓解措施:

  1. 请通过重命名列来重新创建视图。
  2. 如果可能,请避免使用视图。

如果以数据库为作用域的凭据已被使用,则更改该凭据会失败

有时,你可能无法执行 ALTER DATABASE SCOPED CREDENTIAL 查询。 此问题的根本原因是凭据在首次使用后缓存,导致其无法更改。 返回的错误为:

  • Failed to modify the identity field of the credential '{credential_name}' because the credential is used by an active database file.

解决方法:工程团队目前已知道此行为并正在修复。 解决方法是您可以删除并重新创建凭据,这也意味着要使用这些凭据重新创建外部表。 或者,你可以与Azure Support团队联系以获取帮助。

无服务器 SQL 池中的查询失败

尽管用户对storage具有必要的权限,但令牌过期可能会导致查询执行期间出错。 这些错误消息也可能由于常见的用户错误而发生,例如,如果未将基于角色的访问控制(RBAC)角色分配给存储帐户。

错误消息示例:

  • WaitIOCompletion call failed. HRESULT = 0x80070005'. File/External table name: {path}
  • Unable to resolve path '%' Error number 13807, Level 16, State 1, Message "Content of directory on path '%' cannot be listed.
  • Error 16561: External table '<table_name>' is not accessible because content of directory cannot be listed.
  • Error 13822: File {path} cannot be opened because it does not exist or it is used by another process.
  • Error 16536: Cannot bulk load because the file "%ls" could not be opened.

解决方法:

解决方法因身份验证而异,Microsoft Entra(前Azure Active Directory)管理服务标识(MSI)

对于 Microsoft Entra 令牌过期:

对于 MSI 令牌过期:

  • 先停用池,然后重新激活池以清除令牌缓存。 请与Azure Support团队联系以获取帮助。

由于授权标头过长,导致存储访问问题。

无服务器 SQL 池中的错误消息示例:

  • File {path} cannot be opened because it does not exist or it is used by another process.
  • Content of directory on path {path} cannot be listed.
  • WaitIOCompletion call failed. HRESULT = {code}'. File/External table name: {path}

运行查询时,将显示这些通用存储访问错误。 该问题可能发生在一个工作区中的用户身上,但在其他工作区中工作正常。 此行为应该是由令牌大小导致的。

通过在 PowerShell 中运行以下命令来检查 Microsoft Entra 令牌长度。 如果令牌长度接近 11000 或更长,请参阅“应对措施”部分。

(Get-AzAccessToken -ResourceUrl https://database.chinacloudapi.cn).Token.Length

解决方法:

建议的解决方法有:

  • storage access control 中所述,切换到托管身份存储授权。
  • 减少安全组的数目(安全组数目为 90 个或更少会使生成的令牌具有兼容的长度)。
  • 将安全组的数量增加到超过 200 个(因为这会更改令牌的构造方式,其中将包含 MS Graph API URI,而不是组的完整列表)。 在需要将用户添加到新创建的组后,可以通过遵循 managed groups 来添加虚拟/人工组来实现此目的。

查询视图时显示了意外结果

当你查询在创建视图后基础架构已更改的视图时,可能会遇到意外结果。 这意味着该视图引用了已修改或不再存在的列或对象。 为了解决此问题,需要手动调整视图定义,以便与基础架构更改保持一致。

解决方法:手动调整视图定义。

超过 7,500 个字符的查询可能不会显示在 Log Analytics 中

在 Log Analytics 的 SynapseBuiltinSqlPoolRequestsEnded 表中可能无法捕获长度超过 7,500 个字符的查询。

解决方法:

建议的解决方法有:

  • 使用 Synapse 无服务器 SQL 池中的 sys.dm_exec_requests_history 视图来访问历史查询执行详细信息。
  • 重构查询,使其长度小于 7,500 个字符(如果可行)。

由于缺少统计信息,对外部表的查询可能需要更长时间或未完成

无服务器 SQL 池会自动为外部表创建统计信息。 但是,已知问题可以防止为某些列创建统计信息,这可能会导致查询计划和查询性能下降。

解决方法

建议的解决方法如下:

  • 在托管外部表的数据库中运行以下诊断查询,以识别其中stats_namestats_date为 NULL 的列。
  • 如果缺少统计信息,请复制 cmd_create_stats 列中的文本,并在新会话中运行该文本以创建统计信息。
  • 请确保所有相关表和列都有统计信息,并且统计信息是最新的。 如果统计信息已过时,请将其删除并重新创建,以帮助 SQL 优化器生成更高效的查询计划。
  • 请考虑实现自动化来定期删除和重新创建统计信息,以帮助保持一致的查询性能。
SELECT 
   schema_name(o.schema_id) AS [schema_name],
   object_name(o.object_id) AS [table_name],
   o.create_date AS [table_date_create],
   c.name AS [column_name],
   s.name as [stats_name],
   STATS_DATE(s.object_id, s.stats_id) AS [stats_date],
   'CREATE STATISTICS [' + 'Stats_' + c.name + '] ON [' + schema_name(o.schema_id) + '].[' + object_name(o.object_id) + '] ([' + c.name + ']) WITH FULLSCAN;' AS cmd_create_stats,
   'DROP STATISTICS [' + schema_name(o.schema_id) + '].[' + object_name(o.object_id) + '].[' + 'Stats_' + c.name + '];' AS cmd_drop_stats,
   'DROP STATISTICS [' + schema_name(o.schema_id) + '].[' + object_name(s.object_id) + '].[' + s.name + '];' AS cmd_drop_existing_stats
FROM sys.objects AS o
INNER JOIN sys.columns AS c 
   ON o.object_id = c.object_id
LEFT JOIN sys.stats_columns AS sc 
   ON sc.object_id = c.object_id AND sc.column_id = c.column_id
LEFT JOIN sys.stats AS s
   ON s.object_id = sc.object_id AND s.stats_id = sc.stats_id
WHERE o.type = 'U'
ORDER BY [schema_name], [table_name], [column_name];

除了缓解此问题之外,维护新的统计信息还可以提高整体查询性能。

最近关闭的已知问题

Synapse 组件 问题 状态 解决日期
Azure Synapse无服务器 SQL 池 使用 Microsoft Entra 身份验证的查询在 1 小时后失败 已解决 2023 年 8 月
Azure Synapse无服务器 SQL 池 使用 OPENROWSET 读取 Cosmos DB 数据时,Query 失败 已解决 2023 年 3 月
Azure Synapse Apache Spark 池 在 Azure Synapse 管道中使用笔记本时,使用适用于 Apache Spark 的 Azure Synapse 专用 SQL 池连接器从 Synapse Spark 写入到 SQL 专用池失败 已解决 2023 年 6 月
Azure Synapse Apache Spark 池 某些 spark 作业或任务因存储帐户限流而过早失败,并出现错误代码 503 已解决 2023 年 11 月
Azure Synapse Apache Spark 池 在 Spark 3.4 运行时中使用 Synapse 专用 SQL 池连接器时包含 LIKE 子句的查询失败 已解决 2024 年 10 月

Azure Synapse Analytics 无服务器 SQL 池最近已解决的已知问题汇总

使用 Microsoft Entra 身份验证的查询在 1 小时后失败

使用 Microsoft Entra 身份验证的 SQL 连接在保持活动状态超过 1 小时后将开始失败。 这包括通过 Microsoft Entra 直通身份验证查询存储,并使用与 Microsoft Entra ID 交互的语句(例如,CREATE EXTERNAL PROVIDER)。 这会影响使连接保持活动状态的每个工具,例如 SSMS 中的query editor(SQL Server Management Studio)。 打开执行查询的新连接的工具不会受到影响,例如Synapse Studio。

状态:已解决

使用 OPENROWSET 读取 Azure Cosmos DB 数据时查询失败

使用 OPENROWSET 进行的从无服务器 SQL 池到 Cosmos DB 分析存储的查询失败,并显示以下错误消息:

Resolving CosmosDB path has failed with error 'bad allocation'.

状态:已解决

Azure Synapse Analytics Apache Spark 池近期已解决的已知问题总结

在使用适用于 Apache Spark 的 Azure Synapse 专用 SQL 池连接器,并在管道中使用笔记本时,无法从 Synapse Spark 写入 SQL 专用池。

使用适用于 Apache Spark 的 Azure Synapse专用 SQL 池连接器在 pipelines 中使用笔记本编写Azure Synapse专用池时,会看到一条错误消息:

com.microsoft.spark.sqlanalytics.SQLAnalyticsConnectorException: COPY statement input file schema discovery failed: Cannot bulk load. The file does not exist or you don't have file access rights.

状态:已解决

由于存储帐户限流,某些 Spark 作业或任务因限流而过早失败,错误代码 503

在 2023 年 10 月 3 日至 2023 年 11 月 16 日期间,由于超过了存储 API 的限制阈值,部分 Azure Synapse Analytics Apache Spark 池可能会经历 Spark 作业或任务失败。

状态:已解决

在 Spark 3.4 运行时中使用 Synapse 专用 SQL 池连接器时包含 LIKE 子句的查询失败

开源的 Apache Spark 3.4 引入了一个处理特殊字符转义的 问题,但 Synapse SQL 不支持转义关键字。 当客户使用适用于 Apache Spark 的 Azure Synapse 专用 SQL 池连接器时,可能会为 Synapse SQL 生成无效的 SQL 查询,并且 Synapse Spark 笔记本或批处理作业将抛出类似如下的错误:

com.microsoft.spark.sqlanalytics.SQLAnalyticsConnectorException: com.microsoft.sqlserver.jdbc.SQLServerException: Parse error at line: 1, column: XXX: Incorrect syntax near ''%test%''

状态:已解决