排查 Azure 数据工厂中更改数据捕获资源的问题
适用于:Azure 数据工厂 Azure Synapse Analytics
本文提供有关如何排查 Azure 数据工厂中更改数据捕获资源的常见问题的建议。
问题:在 SQL 源中启用本机 CDC 时出现问题。
对于 SQL 中的源,可以使用两组表:启用了本机 SQL CDC 的表和具有基于时间的增量列的表。
按照以下步骤为 SQL 数据库中的特定源表配置本机 CDC。
假设你有下表,其中 ID 作为主键。 如果架构中存在主键,则默认情况下,supports_net_changes 设置为 true。 如果没有,请使用查询 3 中的脚本对其进行配置。
查询 1
CREATE TABLE Persons (
ID int,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Age int,
Last_login DATETIME,
PRIMARY KEY (ID));
注意
目前,ADF CDC 资源仅加载插入、更新和删除操作的净更改。
若要在数据库级别启用 CDC,请执行以下查询:
查询 2
EXEC sys.sp_cdc_enable_db
若要在表级别启用 CDC,请执行以下查询:
查询 3
EXEC sys.sp_cdc_enable_table
@source_schema = N'dbo'
, @source_name = N'Persons'
, @role_name = N'cdc_admin'
, @supports_net_changes = 1
, @captured_column_list = N'ID';
问题:无法在 CDC 资源配置过程中选择表。
如果 SQL 源没有启用了 net_changed 的 SQL Server CDC,或者没有任何基于时间的增量列,则将无法选择源中的表。
问题:调试群集在暖池中不可用。
调试群集在暖池中不可用。 等待时间将超过 1 分钟。
问题:跟踪删除操作时出现问题。
目前,CDC 资源支持以下接收器类型的删除操作 - Azure SQL 数据库和 Delta。 要在列映射页面中实现此目的,请选择可用于确定源中的行是否与接收器中的行匹配的“键”列。
问题:当目标 SQL 表具有标识列时,我的 CDC 资源失败。
当目标接收器表具有标识列时,运行 CDC 时出现以下错误:
当 IDENTITY_INSERT 设置为 OFF 时,不能为表“TableName”中的标识列插入显式值。
运行以下查询,以确定基于 SQL 的目标中是否存在标识列。
查询 4
SELECT *
FROM sys.identity_columns
WHERE OBJECT_NAME(object_id) = 'TableName'
要解决此问题,用户可以执行以下任一步骤:
- 通过在数据库级别运行以下查询将 IDENTITY_INSERT 设置为 ON,然后重新运行 CDC 映射器
查询 5
SET IDENTITY_INSERT dbo.TableName ON;
(或者)
- 在执行插入时,用户可以从映射中删除特定的标识列。
问题:使用自承载集成运行时期间出现问题。
目前,CDC 资源不支持自承载集成运行时。 如果尝试连接到本地源,请将 Azure 集成运行时与托管虚拟网络配合使用。