以下结论和方法,笔者基于SSIS 2010 亲测,如有疑问欢迎指正
1.Execute SQL Task 不能将数据库返回的varchar(max)类型值赋给String变量
2.Execute SQL Task 将数据库返回的大于8000长度的字符串赋值给String变量会被控件截断,String变量只能接收到8000个字符
3.Execute SQL Task 能将数据库返回的varchar(max)赋值给Object变量,Object变量无法在表达式中强转赋值给String变量,可以通过ForEach loop container将Object变量赋值给String变量,或者通过Script Task进行转换赋值给String变量
5.通过Script Task直接获取varchar(max)字符串赋值给String变量,
String变量竟然能存储大于8000长度的字符串
总结:Execute SQL Task控件的锅