You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SSIS中DT_NTEXT字段经脚本组件后无法写入的4000字符限制问题

解决SSIS脚本组件中DT_NTEXT列只读无法写入的问题

我之前在处理SSIS包捕获文件元数据时,也碰到过原输入列变成只读没法修改的情况,给你几个实用的解决办法:

方法1:修改输入列的使用类型(最直接)

脚本组件默认会把输入列设为只读,你需要手动调整它的属性:

  • 打开脚本组件编辑器,切换到「输入列」选项卡
  • 找到你的DT_NTEXT类型的JSON列,把「Usage Type」从ReadOnly改成ReadWrite
  • 点击确定后,回到脚本代码里,就可以直接对该列进行赋值操作了(比如要保留原内容的话,直接Row.JsonContent = Row.JsonContent;就行)

方法2:新增输出列而非修改原列(更推荐)

其实你只是要添加文件名、目录路径这类额外数据,完全不需要修改原JSON列:

  • 在脚本组件编辑器的「输入和输出」选项卡中,展开「输出0」,点击「添加列」
  • 新增两个列,比如FileName(类型设为DT_WSTR,长度根据实际路径调整)和FileDirectory(同类型)
  • 在脚本代码里,只需要给这两个新列赋值,原DT_NTEXT列保持ReadOnly状态,会自动向下传递,这样既简单又不会破坏原数据的流向

脚本代码里的注意事项

如果用方法1修改了原列,要注意SSIS中DT_NTEXT对应的.NET类型是string,所以在C#脚本里直接用字符串操作就行,比如:

// 保留原JSON内容的同时,处理其他逻辑
Row.JsonContent = Row.JsonContent;
// 给新增的文件名列赋值(示例:通过Path类获取文件名)
Row.FileName = System.IO.Path.GetFileName(Row.FilePath);

另外要确保平面文件源的DT_NTEXT列配置正确,避免出现数据截断的情况——你之前已经设置了DT_NTEXT,这一步没问题,但要注意平面文件连接管理器里的「文本限定符」不要误选,否则可能会破坏JSON结构。

内容的提问来源于stack exchange,提问作者AlanPear

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 09:20:03