CAJ*_*AJE 8 sql-server ms-access ssis visual-studio-2012
我试图从前一个同事那里继承一个SSIS包来执行.该包从Access数据库中提取,然后将数据放入SQL数据库.
其中一个字段,我们称之为"推荐",是Access数据库中的"备忘录"类型.SQL输出数据库中的列的类型为varchar(max).
错误:数据流任务中的0xC002F446,OLE DB目标[218]:为"建议"列设置绑定时发生错误.绑定状态为"DT_NTEXT".数据流列类型为"DBBINDSTATUS_UNSUPPORTEDCONVERSION".此提供程序可能不支持从OLE DB类型"DBTYPE_IUNKNOWN"到目标列类型"DBTYPE_WVARCHAR"的转换.
让我更加困惑的是,类型备忘录的另一列(也被处理为DT_NTEXT)也被放入SQL db中的varchar(max)数据类型中,不会抛出错误消息.我尝试了很多转换对象类型,但还没有成功执行包.
Mar*_*icz 14
我能够通过执行以下操作重现此错误:
nvarchar(100)ntext的长度大于100这会导致目标列溢出并抛出您在问题中声明的错误:
Error: 0xC002F446 at Data Flow Task, OLE DB Destination [2]: An error occurred while setting up a
binding for the "myCol" column. The binding status was "DT_NTEXT". The data flow column type is
"DBBINDSTATUS_UNSUPPORTEDCONVERSION". The conversion from the OLE DB type of "DBTYPE_IUNKNOWN" to
the destination column type of "DBTYPE_WVARCHAR" might not be supported by this provider.
Run Code Online (Sandbox Code Playgroud)
所以我认为你发现的是,该ntext列的值超过了nvarchar(max)导致溢出的值.
在您将列转换为的先前版本中dt_wstr(510)- 这是有效的,因为您可能将ntext值截断为适合目标列的大小.如果值确实符合该大小,那么请将其作为解决方案.如果源值可能更大,则将SQL中的目标列更改为适合的值.这可以ntext,但是已被弃用,因此建议将其更改为varbinary(max).
| 归档时间: |
|
| 查看次数: |
26205 次 |
| 最近记录: |