源 SQL Server 数据库

本页面包含以下信息:

  • Datastream 如何处理从来源 SQL Server 数据库中拉取的数据的行为。
  • Datastream 支持的 SQL Server 数据库版本。
  • 将 SQL Server 数据库用作来源的已知限制。

行为

Datastream 使用以下 CDC 方法之一跟踪数据操纵语言 (DML) 更改:

变更表

借助更改表 CDC 方法,用户可以更短时间地保留日志,从而节省存储空间,但与事务日志方法相比,支持的吞吐量较低。与事务日志相比,此方法的限制更少。例如,它可消除日志截断导致数据流永久失败的风险,并支持加密表的复制。如需了解详情,请参阅已知限制

使用此 CDC 方法时,系统会使用专用更改表跟踪对源的更改。系统仍会使用事务日志,但使用范围有限,并且您无需将其保留更长时间。将 DML 事件应用到源表后,系统会将更改复制到相应的更改表。更改表的结构与源表相同,但包含额外的列来包含更改的元数据。只有已提交的事务会添加到更改表中,以及提交操作的日志序列号 (LSN)。

事务日志

使用此 CDC 方法时,Datastream 会直接从事务日志中读取来源中的更改。这种方法需要的资源更少,并且可以更快地检索数据,但限制更多

为防止数据丢失,请务必确保在 Datastream 读取日志之前,日志不会被截断。另一方面,如果您保留日志文件的时间过长,这些文件会占用存储空间,最终可能会导致数据库实例进入只读模式。

为了确保 CDC 读取器有足够的时间读取日志,同时允许日志截断以释放存储空间,您需要执行额外的配置步骤,例如更改轮询间隔和设置截断保护措施。这些步骤提供了额外的保护层,以确保即使 Datastream 端出现停机或源数据库与 Datastream 之间存在连接问题,Datastream 也能读取数据。

如需详细了解如何应用这些额外措施,请参阅配置源 SQL Server 数据库页面,然后选择您的数据库类型。

版本

Datastream 支持以下版本和版本的 SQL Server 数据库:

  • 使用以下版本的自行管理(本地或云托管):
    • 企业版:2008 及更高版本
    • 标准版:2016 SP1 及更高版本
    • 开发者:2008 年及之后
  • Amazon RDS for SQL Server
  • Azure SQL 数据库(层级 S3 及更高级别)。

  • Cloud SQL for SQL Server

Datastream 不支持以下版本的 SQL Server 数据库:

  • SQL Server Standard 版本(2008 到 2014 版)
  • SQL Server Express
  • SQL Server Web

已知限制

将 SQL Server 数据库用作来源的已知限制包括:

  • 数据流限 10,000 个表。
  • 超过 5 亿行的表无法回填,除非满足以下条件:
    1. 表具有唯一的索引。
    2. 所有索引列均不可为 null。
    3. 流中包含索引的所有列。
  • 不支持启用了延迟耐用性或加速数据库恢复 (ADR) 的数据库。
  • 不支持对系统表进行流式更改。
  • 不支持 Windows Active Directory (AD) 身份验证。
  • 以下数据类型不受支持,也不会复制到目标位置:
    • SQL_VARIANT
    • HIERARCHYID
    • GEOMETRY
    • GEOGRAPHY
  • Datastream 会复制用户定义的数据类型,但它是您派生存储在目标位置的用户定义类型的基础数据类型。例如,如果您根据 VARCHAR(50) 数据类型定义 USERNAME 数据类型,则数据会以 VARCHAR(50) 的形式存储在目标位置。
  • 对于没有唯一索引的表中的大型对象列 (TEXTNTEXTXMLIMAGE) 和最大可变长度列 (VARCHAR(MAX)VARBINARY(MAX)NVARCHAR(MAX)),Datastream 不支持 CDC。

    如果数据流中不包含大型对象列,则支持 CDC。

  • 使用变更表 CDC 方法时,Datastream 不支持复制源架构变更。以下架构更改可能会导致数据损坏或无法处理事件:

    • 添加列:系统不会将新列复制到目标位置。
    • 删除列:这些列中的数据会替换为 NULL 值。
    • 修改数据类型:Datastream 会尝试将数据插入目标位置,如果数据被拒绝,则会引发错误。
    • 重命名列:在启用 CDC 时,SQL Server 不支持。
  • Datastream 不支持数据脱敏。数据会在不脱敏的情况下复制。

  • Datastream 不支持复制使用数据层应用软件包 (DACPAC) 软件包应用于数据库的更改。

  • Datastream 不会复制使用 WRITETEXTUPDATETEXT 语句进行的更改。

  • 除非列已标记为 PERSISTED,否则 Datastream 不支持复制计算列

  • Datastream 不支持 PAGECOLUMNSTORECOLUMNSTORE ARCHIVE 压缩类型。

使用事务日志方法时的其他限制

如果您使用事务日志 CDC 方法,则存在以下额外限制:

  • 不支持透明数据加密 (TDE)。
  • 不支持列级加密。这些列中的数据会替换为 NULL 值。
  • Datastream 不支持 ROLLBACK TO SAVEPOINT 语句。系统会忽略此类回滚事件,并且不会将其复制到目标位置。
  • Datastream 不支持以下类型的表中大于 8 KB 的行进行 CDC:
    • 没有唯一索引的表
    • 仅包含一个包含一个或多个可变长度列(VARCHARVARBINARYNVARCHAR)的唯一非分片索引的表
  • Datastream 不支持以下类型表中的大型对象列 (TEXTNTEXTXMLIMAGE) 的 CDC:

    • 没有唯一索引的表
    • 仅包含一个包含一个或多个可变长度列(VARCHARVARBINARYNVARCHAR)的唯一非分片索引的表

    如果数据流中不包含大型对象列,则只有当此类表具有有效的索引时,才支持 CDC。

后续步骤