我们正尝试将数据从本地SQL Server迁移到RDS上的SQL Server。我们正在使用AWS DMS Full-Load实现此目的。我们正在使用 r4.2xlarge 实例。大约有200张桌子。当我们开始迁移任务时,较小的表将被加载,但是在尝试为大型表加载数十万行后失败。我们得到的错误是:
2019-07-29T10:44:34:986583 [SOURCE_UNLOAD] D:RetCode:SQL_ERROR SqlState:08S01 NativeError:-1消息:[Microsoft] [ODBC驱动程序13 for SQL Server] SSL提供程序:[错误:80001044:lib(128):func(1):内部 错误:意外错误] [1022502](ar_odbc_stmt.c:3155)
因此,我们只用一个大表(13+百万行,大小为7GB)重新创建了任务,而不是200个表。这也因相同的错误而失败。同样,任务并非总是在相同的行数下失败-加载的最小行数为30万行,最大行数为500万。
要查看DMS或本地服务器是否存在问题,我们将所有数据复制到使用SSIS运行SQL Server的EC2实例,其中ODBC源指向本地服务器。然后,我们将DMS Full-Load从EC2实例运行到RDS-可行!
因此,问题似乎出在本地服务器及其与DMS的连接上。 AWS支持团队建议改用Simba ODBC驱动程序(在Extra Connection Attributes中使用odbcDriverVendor = Simba),但是在这种情况下,测试连接本身将失败。
其他信息
更新19年7月30日: 我在源终结点上禁用了SSL模式(SslMode = None),满负荷工作了!我现在可以加载整个行集。但是为什么SslMode = Require会引起问题?仅在尝试加载大表时才会出现此问题。对于较小的表,可以使用SslMode。 SslMode在大型表上也可用于数十万行。那么,有没有与ODBC SSL Provider关联的size属性?