【问题标题】:SSIS: Convert between Unicode and Non-Unicode StringsSSIS:在 Unicode 和非 Unicode 字符串之间转换
【发布时间】:2013-09-27 10:49:35
【问题描述】:

设置

我有一个数据流任务:

  • 从数据库表中选择所有数据的 OLE DB 源 (SQL Native)
  • Access 2003 文件模板的 OLE DB 目标 (MS Jet 4.0)

所以本质上我是在选择一个表并将其插入到一个 .mdb 文件中。

问题

我有错误:

column [X] cannot convert between unicode and non-unicode string data types

但是,如果我添加“数据转换步骤”以将 DT_STR 类型的所有列转换为 DT_WSTR,则该错误消息会消失,但我会收到错误消息:

[DTS.Pipeline] Error: "component "OLE DB Source" (6289)" failed validation and returned validation status "VS_NEEDSNEWMETADATA". 

我已经在谷歌上搜索了一段时间,但仍然无法解决它。 有什么想法吗?

【问题讨论】:

  • 源列的数据类型是什么?那些是 nvarchar 吗?
  • 源(SQL 数据库表)中的所有字符串都是 varchars,而不是 nvarchars。
  • 删除您的 OLE DB 源并重新添加。看起来它的元数据不同步。我不知道为什么会这样
  • "selecting all data from a database" 单个表中的所有数据,还是您确实有一些查询试图从数据库中的所有表中生成所有数据?如果是前者,你是如何获取数据的?您是在下拉列表中选择了表名还是编写了特定查询?什么是源数据库?您列出了 SQLNative,但它是针对 SQL Server、SQL Server express 还是其他?那个数据库是什么版本的?
  • @TsSkTo - 我已经尝试过多次,包括整个数据流任务对象和错误再次发生

标签: sql-server sql-server-2005 ssis visual-studio-2005


【解决方案1】:

代替

Select * from tblName 

使用

Select col1, col2, col3, etc from tblName

我发现的原因是,当您使用不同的数据库时,它们可能有一两列会导致问题,因为它没有被映射。因此,当您使用表查询时,请具体说明列名。

【讨论】:

    猜你喜欢
    • 2013-07-13
    • 2016-05-25
    • 2013-03-10
    • 2017-01-02
    • 2017-06-11
    • 2019-06-26
    • 1970-01-01
    • 2018-08-28
    • 2019-01-07
    相关资源
    最近更新 更多