此页面包含有关以下内容的信息:
- Datastream 如何处理从来源 SQL Server 数据库中拉取的数据的行为。
- Datastream 支持的 SQL Server 数据库版本。
- 将 SQL Server 数据库用作来源的已知限制。
行为
Datastream 使用以下 CDC 方法之一跟踪数据操纵语言 (DML) 更改:
事务日志
使用此 CDC 方法时,Datastream 会读取来源中的更改 处理事务日志这种方法需要的资源较少, 可加快数据检索速度,但有更多限制。
为防止数据丢失,请务必确保日志不会在 Datastream 读取之前被截断。另一方面,如果您保留日志文件的时间过长,它们会占用存储空间,这最终可能会导致数据库实例进入只读模式。
为了确保 CDC 读取器有足够的时间来读取日志,同时允许 日志截断以释放存储空间,则需要应用额外的配置 例如,更改轮询间隔和设置截断保护措施。 这些步骤提供了额外的保护层,以确保即使 Datastream 端出现停机或源数据库与 Datastream 之间存在连接问题,Datastream 也能读取数据。
有关如何应用这些额外措施的详细说明,请参阅 配置源 SQL Server 数据库 页面并选择您的数据库类型。
变更表
通过更改表 CDC 方法,用户可以缩短日志保留时间,因此 可以节省存储空间,但支持的吞吐量低于事务 logs 方法。此方法的限制比事务日志少。例如,它可消除日志截断导致数据流永久失败的风险,并支持加密表的复制。如需了解详情,请参阅已知限制。
使用此 CDC 方法时,使用专用 CDC 方法跟踪对来源的更改 更改表格。事务日志仍会被使用,但其使用范围会受到限制,并且 无需将其保留更长时间。当 DML 事件应用于 源表,因此这些更改会复制到相应的更改表。 更改表的结构与源表相同,但包含额外的列来包含更改的元数据。只有已提交的事务 以及 提交操作。
版本
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 会复制用户定义的数据类型,但它是您派生存储在目标位置的用户定义类型的基础数据类型。例如,如果您根据
USERNAME
VARCHAR(50)
数据类型,数据将作为VARCHAR(50)
存储在目标位置。 对于没有唯一索引的表中的大型对象列 (
TEXT
、NTEXT
、XML
、IMAGE
) 和最大可变长度列 (VARCHAR(MAX)
、VARBINARY(MAX)
、NVARCHAR(MAX)
),Datastream 不支持 CDC。如果数据流中不包含大型对象列,则支持 CDC。
在以下情况下,Datastream 不支持复制源架构更改: 更改表 CDC 方法。以下架构更改可能会导致数据损坏或无法处理事件:
- 添加列:新列不会复制到目标位置。
- 删除列:这些列中的数据会替换为
NULL
值。 - 修改数据类型:Datastream 会尝试将数据插入 目标位置,如果数据被拒绝,则会引发错误。
- 重命名列:启用 CDC 时,SQL Server 不支持。
Datastream 不支持数据遮盖。数据会在不脱敏的情况下复制。
Datastream 不支持复制应用于数据库的更改 使用数据层应用包 (DACPAC) 包。
Datastream 不会复制使用
WRITETEXT
或UPDATETEXT
语句。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 搭配使用