Azure Synapse Link for SQL 常见问题解答

本指南解答有关 Azure Synapse Link for SQL 的最常见问题。

否,目前 Azure Synapse Link for SQL 仅支持 Synapse 专用 SQL 池用作数据目标存储。

否,Azure Synapse Link for SQL 目前仅支持将 Azure SQL 数据库和 SQL Server(从 SQL Server 2022 开始)作为源。

如果要添加或删除要复制的表,是否需要停止链接连接?

否,你可以在链接连接运行时添加或删除表。 删除的表将自动停止复制。 新添加的表从初始加载时的完整快照开始,然后进行增量同步。 同一链接连接中的其余表不会受到影响。

目标表存在于目标专用 SQL 池中,这导致链接连接无法启动。 应采取何种操作?

在启动链接连接之前,应删除目标表。 为此,可手动从 Synapse 专用 SQL 池中移除表,也可在“对现有目标表执行操作”下拉列表中选择“删除并重新创建目标表”,从而让它每次启动时自动删除 Synapse 专用 SQL 池中的现有表

如果在源存储中添加或删除了表列,则运行的链接连接会发生什么情况?

将表添加到链接连接后,源数据库中的这些表将不允许添加、删除或更改列。 若要执行这些架构更改,应暂时从链接连接中删除这些表,并在架构更改后重新添加。

是否能暂停链接连接中的数据复制,然后从暂停位置恢复数据复制?

可以。

是否可以在 Synapse 工作区中选择托管虚拟网络(它具有 Synapse 托管专用终结点,允许链接连接以私密方式连接到源数据库)?

可以。 类似于 Synapse 中的所有工作负载。 可以在 Azure Synapse 托管的虚拟网络中启用 Azure Synapse Link for SQL,以安全的方式将数据从 SQL 复制到 Synapse。 可以使用托管专用终结点仅允许托管虚拟网络出站连接到已批准的目标来防止数据外泄。

在创建链接连接时,选择核心计数将表从源存储复制到 Synapse 专用 SQL 池的最佳做法是什么?

核心计数指示将数据从源存储复制到 Synapse 专用 SQL 池所需的计算大小。 这取决于源数据库的复制工作负载模式、表的数量、变化率以及行的大小等。建议从较小的核心计数开始,并测试实际工作负载的延迟。 复制延迟可以反映在链接表的监视页中;上次处理的数据列的时间指示复制落后的时间。

是否应选择“跨表启用事务一致性”?

启用此选项后,跨源数据库上多个表的事务始终在单个事务中复制到目标数据库。 但是,这将增加总体复制吞吐量的开销。 禁用该选项后,每个表将在自己的事务边界中以并行连接的方式将更改复制到目标,从而提高整体复制吞吐量。 如果想要实现表之间的事务一致性,另请确保 Synapse 专用 SQL 池中的事务隔离级别为“读取提交的快照隔离”。

如何在 Synapse 专用 SQL 池中选择目标表的结构类型?

可参考索引表 - Azure Synapse Analytics | Microsoft Docs,了解表结构类型的三个选项。 当选择聚集列存储索引时,不支持长度为最大值(例如,VARCHAR(MAX))的数据类型。

是否需要清理登陆区域中的数据?

错误。 只要链接持续运行,就会有一个后台线程在大约 24 小时后删除提交的文件。 该链接停止时,会删除整个登陆区域文件夹。

Azure Synapse Link for SQL 在以下区域可用:

中国东部 2
中国东部 3
中国北部 2
中国北部 3

登陆区域位于何处?

对于 Azure SQL 数据库,登陆区域是完全托管的,与目标 Azure Synapse Analytics 工作区位于同一区域。 对于 SQL Server 2022,登陆区域由客户管理,可以位于所需的位置。

对登陆区域应用哪种类型的加密?

对于 Azure SQL 数据库,登陆区域是完全托管的,并已使用与目标 Azure Synapse Analytics 工作区相同的密钥(平台管理的密钥或客户管理的密钥)进行加密。 对于 SQL Server 2022,登陆区域由客户管理,可以使用平台管理的密钥或客户管理的密钥进行加密。

我更新了源表中的所有记录。 当我对专用 SQL 池运行查询时,我发现所有数据已消失。 我重新运行了查询,所有数据都恢复了并带有更新。 为何发生这种情况?

引入服务将更新作为“删除后插入”操作进行处理 - 所有处理工作在同一个事务中完成。 默认情况下,专用 SQL 池在“未提交读取”模式下运行 - 这允许你在提交事务之前查看更改。 为确保看不到这些正在进行的更改,可以打开“提交读取快照隔离”。

添加到源数据库的新表是否会自动添加到链接连接?

否。 需要在 Azure Synapse Analytics 环境中编辑链接连接以添加新表。 可以将表添加到正在运行的连接而无需停止连接 - 发布对链接连接所做的更改时,新表将包含在复制中。

从 Azure SQL 数据库和 SQL Server 2022 复制到 Azure Synapse Analytics 专用 SQL 池的数据的延迟有多大?

我们尚未发布延迟 SLA。 如果你遇到高延迟问题,可以调整分配到链接连接的核心数量、目标专用 SQL 池的大小,或调整写入配置的事务一致性以适合工作负载。

登陆区域数据使用哪种格式? 是否可将它用于其他目的?

登陆区域是一个临时数据存储,我们不支持将该数据用于 Azure Synapse Link for SQL 以外的任何目的。

Azure Synapse Link for SQL 使用推送模型,其中源数据库将数据写入登陆区域,然后通过一个可以连续运行(提供准实时数据处理)或以计划模式运行的引入服务移入目标专用 SQL 池中。 复制活动使用拉取模型,其中的数据从源数据库查询,并按计划写入目标位置。

此限制仅适用于页面中数据。 对于页外数据,只会将指向页外数据的 24 字节指针计入 7,500 字节限制。

新的更改源处理器已集成到 Azure SQL 数据库和 SQL Server 2022 引擎,以启用此功能。

如果登陆区域的用户托管存储帐户的 SAS 已过期,请使用 ALTER DATABASE SCOPED CREDENTIAL 更新新 SAS 的数据库凭据。

如果移除 Azure Synapse工作区,Azure SQL 数据库会停止将数据从登陆区域复制到 Azure Synapse 的操作。 将自动调用系统存储过程 sp_change_feed_drop_table_group,并管理和自动清理登陆区域的存储帐户。 如果此操作失败,你可能会在 sys.dm_change_feed_errors 中收到 SynapseGatewayClient 发出的错误 22739。 如果发生这种情况,可以使用 sp_change_feed_drop_table_group 手动删除 changefeed 表组。

在 SQL Server 中,由于登陆区域存储帐户由用户管理,因此数据将继续发布到登陆区域。 应通过使用 sp_change_feed_drop_table_group 删除相关表组来禁用 Azure Synapse Link,并手动删除登陆区域的存储帐户。

在 SQL Server 中,登陆区域存储帐户由用户管理。 如果无法再访问登陆区域存储帐户,你将在 sys.dm_change_feed_errors 中看到错误。 应通过使用 sp_change_feed_drop_table_group 删除相关表组来禁用 Azure Synapse Link。