本文介绍如何将 Azure SQL 数据库变更数据捕获 (CDC) 源添加到事件流。
通过用于 Microsoft Fabric 事件流的 Azure SQL 数据库 CDC 源连接器,你可以捕获 Azure SQL 数据库中当前数据的快照。 然后,连接器将监视并记录对此数据进行的任何未来的行级别更改。 在事件流中捕获更改后,可以实时处理此 CDC 数据,并将其发送到 Fabric 内的不同目标,以进一步处理或分析。
先决条件
- 在 Fabric 容量许可证模式或具有参与者或更高权限的试用许可证模式下访问工作区。
- 具有 Azure SQL 数据库的正在运行的 Azure SQL 服务器。
- 你的 Azure SQL 数据库必须可供公开访问,并且不能位于防火墙后面或在虚拟网络中受到保护。
- 通过运行存储过程
sys.sp_cdc_enable_db在 Azure SQL 数据库中启用了 CDC。 有关详细信息,请参阅启用和禁用变更数据捕获。 - 如果没有事件流,请创建一个事件流。
请注意,不得在 Azure SQL 数据库中启用镜像。
在 Azure SQL 数据库中启用 CDC
转到 Azure 门户,打开 Azure SQL 数据库并选择“查询编辑器”。 选择要登录的身份验证方法。
运行以下 SQL 命令,在数据库中启用 CDC:
-- Enable Database for CDC EXEC sys.sp_cdc_enable_db; -- Enable CDC for a table using a gating role option EXEC sys.sp_cdc_enable_table @source_schema = N'dbo', @source_name = N'MyTable', @role_name = NULL GO
启动“选择数据源”向导
如果尚未将任何源添加到事件流,请选择 “使用外部源 ”磁贴。
如果要将源添加到已发布的事件流,请切换到 “编辑 ”模式。 在功能区上,选择 “添加源>外部源”。
在“选择数据源”页面上,搜索并选择“Azure SQL DB (CDC)”磁贴上的“连接”。
配置并连接到 Azure SQL 数据库 CDC
在“连接”页上,选择“新建连接”。
在“连接设置”部分中,为 Azure SQL 数据库输入以下值:
服务器:输入 Azure 门户中的 Azure SQL 服务器名称。 它采用以下形式:
mysqlservername.database.windows.net。数据库:输入 Azure 门户中的 Azure SQL 数据库名称。
向下滚动,然后在“连接凭据”部分中,执行以下步骤。
对于“连接名称”,为连接输入名称。
对于“身份验证类型”,选择“基本”。
注意
目前,Fabric Eventstream 仅支持 基本 身份验证。
输入数据库的“用户名”和“密码”。
选择“连接” 。
现在,在 “连接 ”页上,选择“ 所有表”或 “输入表名称”。 如果选择后者,请使用以逗号分隔的完整表标识符列表(
schemaName.tableName)或有效的正则表达式指定表。 例如:- 使用
dbo.test.*选择名称以dbo.test开头的所有表。 - 用
dbo\.(test1|test2)选择dbo.test1和dbo.test2。
可以使用逗号混合这两种格式。 整个条目的总字符限制为 102,400 个字符。
- 使用
可以展开 高级设置 以访问 Azure SQL 数据库 CDC 源的其他配置选项:
-
小数处理模式:定义连接器如何处理
DECIMAL和NUMERIC列值:-
Precise:表示使用精确小数类型(例如 JavaBigDecimal)的值,以确保数据表示形式的完全精度和准确性。 -
Double:将值转换为双精度浮点数。 此设置可提高可用性和性能,但可能会导致精度损失。 -
String:将值编码为格式化字符串。 此设置便于在下游系统中使用,但会丢失有关原始数值类型的语义信息。
-
-
快照模式:指定在连接器启动时执行快照的条件:
-
Initial:仅当逻辑服务器名称的偏移量未被记录,或检测到早期快照无法完成时,连接器才会运行快照。 快照完成后,连接器开始流式传输事件记录以供后续数据库更改。 -
InitialOnly:仅当逻辑服务器名称尚未记录任何偏移量时,连接器才会运行快照。 快照完成后,连接器停止运行。 它不会切换到使用流式处理来读取二进制日志中的更改事件。 -
NoData:连接器运行一个快照,该快照仅捕获架构,但不捕获任何表数据。 如果不需要数据的一致快照,但只需要连接器启动时发生的更改,请设置此选项。
-
- 列排除列表:指定要使用完全限定名称(schemaName.tableName.columnName)从更改事件值中排除的列。
-
数据库 applicationIntent:确定 SQL Server AlwaysOn 可用性组中的路由行为:
-
ReadWrite:连接到主副本。 如果连接需要同时执行读取和写入作,请使用此方法。 -
ReadOnly:允许路由到次要可读副本用于只读操作。 使用它直接在副本上启用 CDC。 需要将 snapshot.isolation.mode 设置为“快照”,这是只读副本唯一支持的事务隔离模式。
-
- 覆盖快照的 select 语句:如果希望快照仅包含表中的部分行,可以使用该属性。 此属性仅影响快照。 它不适用于连接器从日志中读取的事件。
-
小数处理模式:定义连接器如何处理
选择下一步。
在“查看并创建”屏幕上,查看摘要,然后选择“添加”。
通过 CDC 将具有自动表架构注册的 Azure SQL 数据库的数据引入到 Eventstream 中。
在“连接”页上,选择“新建连接”。
在“连接设置”部分中,为 Azure SQL 数据库输入以下值:
服务器:输入 Azure 门户中的 Azure SQL 服务器名称。 它采用以下形式:
mysqlservername.database.windows.net。数据库:输入 Azure 门户中的 Azure SQL 数据库名称。
向下滚动,然后在“连接凭据”部分中,执行以下步骤。
对于“连接名称”,为连接输入名称。
对于“身份验证类型”,选择“基本”。
注意
目前,Fabric Eventstream 仅支持 基本 身份验证。
输入数据库的“用户名”和“密码”。
选择“连接” 。
现在,在 “连接 ”页上,选择“ 所有表”或 “输入表名称”。 如果选择后者,请使用以逗号分隔的完整表标识符列表(
schemaName.tableName)或有效的正则表达式指定表。 例如:- 使用
dbo.test.*选择名称以dbo.test开头的所有表。 - 用
dbo\.(test1|test2)选择dbo.test1和dbo.test2。
可以使用逗号混合这两种格式。 整个条目的总字符限制为 102,400 个字符。
- 使用
可以展开 高级设置 以访问 Azure SQL 数据库 CDC 源的其他配置选项:
-
小数处理模式:定义连接器如何处理
DECIMAL和NUMERIC列值:-
Precise:表示使用精确小数类型(例如 JavaBigDecimal)的值,以确保数据表示形式的完全精度和准确性。 -
Double:将值转换为双精度浮点数。 此设置可提高可用性和性能,但可能会导致精度损失。 -
String:将值编码为格式化字符串。 此设置便于在下游系统中使用,但会丢失有关原始数值类型的语义信息。
-
-
快照模式:指定在连接器启动时执行快照的条件:
-
Initial:仅当逻辑服务器名称的偏移量未被记录,或检测到早期快照无法完成时,连接器才会运行快照。 快照完成后,连接器开始流式传输事件记录以供后续数据库更改。 -
InitialOnly:仅当逻辑服务器名称尚未记录任何偏移量时,连接器才会运行快照。 快照完成后,连接器停止运行。 它不会切换到使用流式处理来读取二进制日志中的更改事件。 -
NoData:连接器运行一个快照,该快照仅捕获架构,但不捕获任何表数据。 如果不需要数据的一致快照,但只需要连接器启动时发生的更改,请设置此选项。
-
- 列排除列表:指定要使用完全限定名称(schemaName.tableName.columnName)从更改事件值中排除的列。
-
数据库 applicationIntent:确定 SQL Server AlwaysOn 可用性组中的路由行为:
-
ReadWrite:连接到主副本。 如果连接需要同时执行读取和写入作,请使用此方法。 -
ReadOnly:允许路由到次要可读副本用于只读操作。 使用它直接在副本上启用 CDC。 需要将 snapshot.isolation.mode 设置为“快照”,这是只读副本唯一支持的事务隔离模式。
-
- 覆盖快照的 select 语句:如果希望快照仅包含表中的部分行,可以使用该属性。 此属性仅影响快照。 它不适用于连接器从日志中读取的事件。
-
小数处理模式:定义连接器如何处理
启用 事件架构关联。
对于 工作区,请选择架构集的 Fabric 工作区。
对于 架构集,默认选择 “+ 创建 ”,这将创建新的架构集。 可以更改它以选择现有的事件架构集。
如果在上一步中选择了 +创建 选项,请输入架构集的名称。
在“审阅 + 连接”页上,选择“添加”。
对于 Azure SQL 数据库中的所有表或所选表,连接器会自动发现和创建架构,并将其注册到架构注册表。
选择中间的事件 流 节点,并切换到底部窗格中的 “关联架构 ”选项卡。
架构集
查看更新的事件流
可以在“编辑模式”下看到添加到事件流的 Azure SQL 数据库 (CDC) 源。
要实现这个新添加的 Azure SQL 数据库 CDC 源,请选择“发布”。 完成这些步骤后,你的 Azure SQL 数据库 CDC 源可在“实时视图”中进行可视化。
配置事件流目标以使用架构
目前,只有启用了扩展功能的事件流支持 eventhouse、自定义终结点和派生流目标。 本部分介绍如何在为事件流启用扩展功能(如架构支持)时添加和配置 eventhouse 目标。
为自定义终结点目标配置架构
选择 “转换事件”或“添加目标”,然后选择 “CustomEndpoint”。
在 “自定义终结点 ”窗格中,指定目标的名称。
对于 输入架构,请选择事件的架构。 启用事件流的架构支持时,将在此框中做出选择。
有关配置自定义终结点目标的详细步骤,请参阅 向事件流添加自定义终结点或自定义应用目标。
为 eventhouse 目标配置架构
选择 “转换事件”或“添加目标”,然后选择“ Eventhouse”。
在 Eventhouse 窗格中,配置以下与架构相关的设置:
有关配置 eventhouse 目标的详细步骤,请参阅 向事件流添加事件屋目标。
相关内容
其他连接器: