![](/img/trans.png)
[英]Execute SQL task (SSIS) and then insert the result set into a table on a different server
[英]SSIS 2012 truncates result set of Execute SQL task
对此进行了高低搜寻,发现了很多建议,但对我没有任何帮助。 我们有一个带有字段的表,该字段在文本类型列中存储SQL查询,该查询随后被其他对象调用,因此需要转义某些字符。
我构建了一段SQL代码来完成这一工作。 问题是,当放入Execute SQL任务并将结果分配给String变量时,文本会在看似随机的地方被截断,例如。 最近的尝试将4184个字符截断为4058个字符。
我知道nvarchar在SSIS中限制为4000个字符。 一种建议是使用nvarchar(max)源数据类型和Object变量类型。 失败并显示此错误:
“将结果提取到类型为(DBTYPE_WSTR)的变量中时发生错误”。
另一个是在源查询中使用ntext。 失败并显示此错误:
“ text,ntext和image数据类型对于局部变量无效。”
我想念什么吗? 将长字符串放入Execute SQL结果集变量的正确方法是什么?
这是获取SQL命令的原始代码,该代码有效但会被截断。 Put在ID周围加上一个转义的单引号。 (这些特定的ID为varchar,因为它们可以包含字母。)
DECLARE @IDList VARCHAR(8000)
SELECT @IDList = COALESCE(@IDList + ', ', '') + '''''' + PersonID + ''''''
FROM tmpGroup
select '''SELECT SystemID
FROM People
WHERE PersonID IN (' + @IDList + ')''' AS GroupSQL
请注意,它使用VARCHAR(8000),因为这是唯一起作用的源数据类型。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.