Alt*_* XL 3 sql-server ssis smo sqlbulkcopy sql-server-2012
为了给出一些上下文,我目前正在Amazon RDS上运行一个SQL Server 2012实例,而且我不得不两次移动到更大的实例.第一次SQLAzureMW是要走的路,但当时没有一张表那么大.第二次,SQLAzureMW总是使用大表(超过5 GB的几个)在bcp命令上超时源服务器.同样,SSIS导入/导出向导也超时.我发现源服务器始终是问题所以我尝试将实例的类从m1.medium增加到m1.xlarge无济于事,源服务器仍然总是超时,然后在大表上取得任何重大进展.
最后,我最终编写了自己的.NET程序,只在大型源表上运行"SELECT*FROM [table] ORDER BY [id] OFFSET {0} ROWS",并将结果推送到目标服务器上的SQLBulkCopy中.源服务器再次超时,但我在一个循环中包装了try和catch语句,这将简单地从SQLBulkCopy的最后一点恢复查询.话虽如此,我对这个解决方案并不十分兴奋.
我正在考虑围绕Microsoft.SqlServer.Management.Smo.Transfer类构建一个解决方案,但我担心可能会出现与源代码连接断开无法恢复相同的问题.
我更倾向于开箱即用的解决方案,就像SQLAzureMW在表格过大之前我希望SSIS导入导出向导一样.一定有更好的方法.
小智 5
我们遇到了类似的情况:在连接到SQL Server 2012 RDS实例的Window server 2012 EC2实例上运行SQLAZureMW.AWS支持建议对我们的EC2实例进行以下更改,它似乎已解决了我们的所有问题:
AWS的说明:
以下是禁用TCP卸载的步骤:转到Citrix PV以太网适配器的属性单击配置转到高级禁用以下所有属性:IPv4Checksum卸载大型接收卸载(IPv4),大型发送卸载版本2(IPv4),TCP校验和卸载(IPv4),UDP校验和卸载(IPv4)
然后,作为最后一步,从命令提示符运行以下命令:
Run Code Online (Sandbox Code Playgroud)netsh int ip set global taskoffload=disabled netsh int tcp set global chimney=disabled netsh int tcp set global rss=disabled netsh int tcp set global netdma=disabled
| 归档时间: |
|
| 查看次数: |
1977 次 |
| 最近记录: |