SQL Server 连接器限制

重要

Microsoft SQL Server 连接器为公共预览版

此页列出了使用 Databricks Lakeflow Connect 引入 SQL Server 的限制和注意事项。

常规数据库连接器限制

本节中的限制适用于 Lakeflow Connect 中的所有数据库连接器。 继续阅读以了解连接器特定的限制。

  • 运行计划的管道时,警报不会立即触发。 而是在更新下一次运行时触发。
  • 删除源表时不会自动删除目标表。 你必须手动删除目标表。 此行为与 Lakeflow 声明性管道行为不一致。
  • 在源维护期间,Databricks 可能无法访问数据。
  • 如果源表名称与现有目标表名称冲突,则管道更新将失败。
  • 多目标管道支持仅限 API。
  • 可以选择重命名引入的表。 如果重命名管道中的表,它将变为仅限 API 的管道,并且不能再在 UI 中编辑管道。
  • 如果在管道启动后选择列,连接器不会自动为新列回填数据。 若要引入历史数据,请手动对该表执行全面刷新。
  • 即使两个表来自不同的源架构,Databricks 也无法在同一管道中引入具有相同名称的两个或多个表。
  • 源系统假定游标列单调增加。
  • Azure GovCloud 区域中的工作区不支持管理的引入管道。
  • 支持仅限于主 SQL Server 实例。 这是因为只读副本或辅助实例不支持更改跟踪和更改数据捕获。

身份验证

  • 连接器仅支持用户名和密码身份验证。
  • 多子网故障转移群集配置必须提供单个前端 IP 地址。

数据库变体

  • 该连接器支持 Azure SQL 和 Amazon RDS SQL 数据库。 这包括在 Azure 虚拟机(VM)和 Amazon EC2 上运行的 SQL Server。 该连接器还支持通过 Azure ExpressRoute 和 AWS Direct Connect 网络在本地使用 SQL Server。

  • 要使用 Microsoft 变更数据捕获 (CDC):

    • 必须具有 SQL Server 2012 Service Pack 1 (SP1) 累积更新包 3 (CU3) 或更高版本。

      此更新引入了 __$command_id 该列。 如果没有此列,引入网关将无法可靠地区分数据修改操作的类型(例如,UPDATE 操作表现为 DELETE-INSERT 具有相同 __$seqval 值的配对)。 这可能会导致数据不一致。

    • 对于低于 SQL Server 2016 的版本,还需要 Enterprise Edition。

  • 要使用 Microsoft 变更跟踪功能,必须具有 SQL Server 2012 或更高版本。

管道

  • 每个引入管道必须与一个引入网关完全关联。
  • 尽管引入管道在无服务器计算上运行,但引入网关必须在经典计算上运行。

架构演变

除非选择退出,否则连接器会自动处理新的和已删除的列。

  • 当源中出现新列时,Databricks 会在管道的下一次运行中自动引入该列。 但是,你可以选择退出此功能。
  • 从源中删除列时,Databricks 不会自动删除它。 相反,连接器使用表属性将目标中的已删除列设置为inactive。 如果以后出现另一列与 inactive 列名称冲突,则管道将失败。 在这种情况下,可以执行表格的完全刷新或手动删除非活动列。

如果引入整个架构,则对于架构中的新表和已删除表也是如此。

最后,连接器可以处理列重命名,尽管这需要完全刷新表。

其他架构更改(例如数据类型更改)还需要完全刷新目标表。

暂存

暂存目录不能是外部目录。

表格

  • Databricks 建议每个管道引入 250 个或更少的表。 但是,这些对象中支持的行数或列数没有限制。
  • Databricks 无法通过一个管道同时引入名称仅在大小写上不同的两个表(例如 MyTableMYTABLE)。 为了支持此类场景,请创建两个网关-引入管道对,并将数据发布到目标架构。
  • source_catalogsource_schemasource_table 名称区分大小写。 例如,如果源数据库目录指定为 Marketingsys.databases 中,则不能在 marketing 中将其指定为 ingestion_definition
  • 尽管可以从一个管道中的多个源目录或架构引入,但无法引入同名的两个表。 例如,您不能在同一管道中同时引入schema1.Marketingschema2.Marketing
  • objectsingestion_definition 字段中可以包含多个表或架构规范。 但是,不同源架构中的源表名称不能重叠。 这会导致引入管道失败。