本页面包含以下信息:
- 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 亿行的表无法回填,除非满足以下条件:
- 表具有唯一的索引。
- 所有索引列均不可为 null。
- 流中包含索引的所有列。
- 不支持启用了延迟耐用性或加速数据库恢复 (ADR) 的数据库。
- 不支持对系统表进行流式更改。
- 不支持 Windows Active Directory (AD) 身份验证。
- 以下数据类型不受支持,也不会复制到目标位置:
SQL_VARIANT
HIERARCHYID
GEOMETRY
GEOGRAPHY
- Datastream 会复制用户定义的数据类型,但它是您派生存储在目标位置的用户定义类型的基础数据类型。例如,如果您根据
VARCHAR(50)
数据类型定义USERNAME
数据类型,则数据会以VARCHAR(50)
的形式存储在目标位置。 对于没有唯一索引的表中的大型对象列 (
TEXT
、NTEXT
、XML
、IMAGE
) 和最大可变长度列 (VARCHAR(MAX)
、VARBINARY(MAX)
、NVARCHAR(MAX)
),Datastream 不支持 CDC。如果数据流中不包含大型对象列,则支持 CDC。
使用变更表 CDC 方法时,Datastream 不支持复制源架构变更。以下架构更改可能会导致数据损坏或无法处理事件:
- 添加列:系统不会将新列复制到目标位置。
- 删除列:这些列中的数据会替换为
NULL
值。 - 修改数据类型:Datastream 会尝试将数据插入目标位置,如果数据被拒绝,则会引发错误。
- 重命名列:在启用 CDC 时,SQL Server 不支持。
Datastream 不支持数据脱敏。数据会在不脱敏的情况下复制。
Datastream 不支持复制使用数据层应用软件包 (DACPAC) 软件包应用于数据库的更改。
Datastream 不会复制使用
WRITETEXT
或UPDATETEXT
语句进行的更改。除非列已标记为
PERSISTED
,否则 Datastream 不支持复制计算列。Datastream 不支持
PAGE
、COLUMNSTORE
或COLUMNSTORE ARCHIVE
压缩类型。
使用事务日志方法时的其他限制
如果您使用事务日志 CDC 方法,则存在以下额外限制:
- 不支持透明数据加密 (TDE)。
- 不支持列级加密。这些列中的数据会替换为
NULL
值。 - Datastream 不支持
ROLLBACK TO SAVEPOINT
语句。系统会忽略此类回滚事件,并且不会将其复制到目标位置。 - Datastream 不支持以下类型的表中大于 8 KB 的行进行 CDC:
- 没有唯一索引的表
- 仅包含一个包含一个或多个可变长度列(
VARCHAR
、VARBINARY
、NVARCHAR
)的唯一非分片索引的表
Datastream 不支持以下类型表中的大型对象列 (
TEXT
、NTEXT
、XML
、IMAGE
) 的 CDC:- 没有唯一索引的表
- 仅包含一个包含一个或多个可变长度列(
VARCHAR
、VARBINARY
、NVARCHAR
)的唯一非分片索引的表
如果数据流中不包含大型对象列,则只有当此类表具有有效的索引时,才支持 CDC。
后续步骤
- 了解如何配置 SQL Server 来源以便与 Datastream 搭配使用。