sql-server - 使用 SQL Server 作为源时的 AWS DMS 限制 - 复制信息超过 8000 字节的行

标签 sql-server database amazon-web-services transaction-log dms

我正在考虑在 Amazon RDS 中创建一个只读数据库,使用他们的 DMS 从现场数据库复制数据。在 Amazon DMS 的一般限制列表中,其中之一是:

Changes to rows with more than 8000 bytes of information, including header and mapping information, are not processed correctly due to limitations in the SQL Server TLOG buffer size.

这适用于什么情况?我的印象是一个表每行最多可以包含 8,060 个字节。我了解 varcharnvarcharvarbinarysql_variant 或 CLR 用户定义类型被插入另一行一个指针在它的位置。是指这个吗?我试图了解会发生这种情况的任何情况。

此外,我如何确定哪些表(如果有)会受到影响?

最佳答案

好吧,看来我现在可以回答我自己的问题了,至少在一个用例中是这样。

这与组合列的可能大小无关,但如前所述,与其中的数据量有关。创建一个包含 id 和 9 个 varchar(1000) 列的表。用 1000 字节填充前 8 个字节,然后按原样复制所有内容。用数据填充剩余的列,并且不会复制更新(大概是因为列数据被推离页面)。奇怪的是,varchar(max) 似乎并没有受到这种影响。

要找到受此影响的行的表,请运行以下命令,注意 MaximumRecordSize 列:

dbcc showcontig with tableresults

解决该问题的一种方法是将有问题的表拆分为较小的相关表(也就是对其进行规范化),然后执行连接以检索数据。这可能可行也可能不可行,具体取决于您的数据库的大小。

关于sql-server - 使用 SQL Server 作为源时的 AWS DMS 限制 - 复制信息超过 8000 字节的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46074412/

相关文章:

sql - 如何在 SQL 查询中获取父值和最后替换的值

sql - MS SQL服务器: Check to see if a user can execute a stored procedure

sql - @@IDENTITY、SCOPE_IDENTITY()、OUTPUT 和其他检索最后身份的方法

sql - 合并查询结果中的记录

mysql - 如何设计这个数据库

c - 数据库系统中的文件组织和操作

amazon-web-services - 同步两个 Amazon S3 存储桶的最快方法

amazon-web-services - `aws s3 cp` 与 `aws s3 sync` 行为和成本

python-3.x - 参数 "--python-modules-installer-option"在 pythonshell Glue Jobs 中不起作用

mysql - Access : CrossTab Query Increase Data Text 'length' ?