【发布时间】:2021-09-12 03:08:29
【问题描述】:
我正在尝试从以前的同事那里继承一个 SSIS 包来执行。该包从 Access 数据库中提取数据,然后将数据放入 SQL 数据库中。
其中一个字段,我们称之为“建议”,在 Access 数据库中属于 “备忘录” 类型。 SQL 输出数据库中的列的类型为 varchar(max)。
错误:数据流任务中的 0xC002F446,OLE DB 目标 [218]:为“建议”列设置绑定时出错。绑定状态为“DT_NTEXT”。数据流列类型为“DBBINDSTATUS_UNSUPPORTEDCONVERSION”。此提供程序可能不支持从“DBTYPE_IUNKNOWN”的 OLE DB 类型转换为“DBTYPE_WVARCHAR”的目标列类型。
更让我感到困惑的是 memo 类型的不同列,它也被处理为 DT_NTEXT,并且也被放入 varchar(max) SQL 数据库中的数据类型,不会引发错误消息。我尝试了许多转换对象类型,但尚未成功执行该包。
【问题讨论】:
-
sql中推荐的数据类型是varchar(max)吗?我很惊讶备忘录栏没有抛出 unicode 转换错误。
-
是的。刚刚意识到我的原始帖子包含针对不同列的类似错误。很抱歉有任何混淆。
-
因此,当我尝试复制此问题时,我有一个 ntext 列进入 oledb 目标的 varchar(max) 列 - 但它抛出无法在 unicode 和非 unicode 之间转换的错误类型。你确定你的 sql 表是 varchar(max) 吗?可以尝试将ntext列转换为文本或将sql表转换为nvarchar(max)吗?
-
发现同一包的不同版本,其中向长度为 510 的 DT_WSTR 的转换由数据转换对象完成。这种变化似乎执行得很好,但我不完全确定为什么。
标签: sql-server ms-access visual-studio-2012 ssis