此页面包含有关以下内容的信息:
- Datastream 如何处理从来源 SQL Server 数据库中拉取的数据的行为。
- Datastream 支持的 SQL Server 数据库版本。
- 使用 SQL Server 数据库作为源的已知限制。
行为
Datastream 使用 API 来跟踪数据操纵语言 (DML) 变更 CDC 方法:
事务日志
使用此 CDC 方法时,Datastream 会读取来源中的更改 处理事务日志这种方法需要的资源较少, 可加快数据检索速度,但有更多限制。
为防止数据丢失,请务必确保日志不会在 Datastream 读取之前被截断。另一方面,如果您保留 它们会占用存储空间,最终可能会导致 实例进入只读模式。
为了确保 CDC 读取器有足够的时间读取日志,同时允许日志截断以释放存储空间,您需要执行额外的配置步骤,例如更改轮询间隔和设置截断保护措施。这些步骤提供了一层额外的保护,可确保 Datastream 即使 Datastream 端停机或出现故障, 源数据库与 Datastream 之间的连接问题。
有关如何应用这些额外措施的详细说明,请参阅 配置源 SQL Server 数据库 页面并选择您的数据库类型。
变更表
通过更改表 CDC 方法,用户可以缩短日志保留时间,因此 可以节省存储空间,但支持的吞吐量低于事务 logs 方法。与事务日志相比,此方法的限制更少。例如: 它消除了因日志截断而导致数据流永久失败的风险, 并且支持复制加密表。如需了解详情,请参阅 已知限制。
使用此 CDC 方法时,系统会使用专用更改表跟踪对源的更改。事务日志仍会被使用,但其使用范围会受到限制,并且 无需将其保留更长时间。当 DML 事件应用于 源表,因此这些更改会复制到相应的更改表。 更改表的结构与源表相同, 列中包含这些更改的元数据。只有已提交的事务会添加到更改表中,以及提交操作的日志序列号 (LSN)。
版本
Datastream 支持以下版本和版本的 SQL Server 数据库:
- 自行管理(本地或云托管)的以下版本:
- 企业:2008 年及之后
- Standard: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 不支持数据遮盖。无需复制数据, 遮盖。
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 搭配使用