本文是有关排查 Azure SQL 数据库和 SQL Server 的 Azure Synapse Link 初始快照问题的指南。
首先检查配置。 有关详细信息,请参阅配置源 Azure SQL 数据库。
症状
用户可以按照以下解决步骤调查以下情况:
- 确定链接连接快照状态是否为停滞。
- 确定在启动链接连接后是否观察到与快照相关的错误。
- 了解各个表的初始快照进度。
解决方法
步骤 1:查询以获取链接连接中包含的表的当前快照状态
使用 SQL Server Management Studio 或 Azure Data Studio 连接到为 Azure Synapse Link 启用的源数据库。
在源数据库中运行以下 T-SQL 命令,列出 changefeed.change_feed_tables 中所有启用了更改源的表及其快照相关的列。 在查询结果中,检查 snapshot_phase 列。
SELECT table_group_id, table_id, state, version, snapshot_phase,
snapshot_current_phase_time, snapshot_retry_count, snapshot_start_time,
snapshot_end_time, snapshot_row_count
FROM changefeed.change_feed_tables;
示例输出:
- 如果所需表的
snapshot_phase列值为 6 (EMIT_SNAPSHOT_ENDENTRY),则表示表的快照已完成,无需进一步调查。 - 快照的步骤可能比其他步骤更耗时。 阶段 5 (
EXPORT_DATA_FILE) 可能是一个耗时的步骤。 当表大小较大时,EXPORT_DATA_FILE阶段预计需要更长的时间才能完成。 有关快照阶段的详细信息,请参阅 changefeed.change_feed_tables。
如果给定表的快照尚未完成,可以根据 changefeed.change_feed_tables 的输出考虑两种可能的情况:
- 当
Snapshot_phase< 6 且snapshot_retry_count= 0 时,快照操作正在进行中,没有错误。 在这种情况下,无需执行任何操作,请等待快照完成。 - 当
Snapshot_phase< 6 且snapshot_retry_count> 0 时,快照操作失败,正在重试。 继续执行步骤 2。 例如,如下图所示:
步骤 2:快照重试
如果由于出错而被迫重试快照,请在 sys.dm_change_feed_errors 动态管理视图中找到详细信息。 在源数据库中运行以下 T-SQL 命令:
SELECT * FROM sys.dm_change_feed_errors;
例如:
- 如果在
source_task= 5 时在快照组件中观察到任何错误,请参阅 Azure Synapse Link for SQL 的已知限制和问题中的特定于错误的缓解详细信息。 - 如果在已知限制文章中未找到该错误,请提交 Azure 支持请求。


