我有一张大约有700,000行的表。它有11列,其中一列是varchar(max))列,它有xml数据。 现在我必须将这些数据从一台服务器传输到另一台服务器。我在SSIS包中做了以下工作。 我编写了我的查询,在单个数据流任务中获得第一个100,000,并且每100,000个我添加了一个数据流任务,我将defaultbuffersize修改为(10 MB - 100 MB),并将defaultbufferRow修改为低和高, 但是它花了很长时间来查询表,但是它如此快速地写入数据。我尝试删除varchar(max)列,甚至不用5分钟。
因此,添加varchar列需要大约13个小时。
我尝试使用.Net代码也通过数据集,bulkinsert并使用TPL来使用我的所有processord。但我无法看到任何重大的差异。
任何帮助将不胜感激。
答案 0 :(得分:1)
700000不是很多行。 你真的需要varchar(最大) 即len()是否超过8000? 如果不是 - 将其转换为varchar(8000),则缓冲区大小将更小。 网络I / O可能是个问题吗? 您是否正在将数据从我们移至欧洲并再次返回在这种情况下,将网络数据包大小增加到33k。 在现代硬件上,传输此数据的时间不应超过1小时。我希望10分钟! 一个好的测试是传输到没有索引或约束的空表的时间。 如果这很快,那么你应该看到问题在哪里。