SSIS转换Unicode和非Unicode误差之间(SSIS Convert Between Un

2019-07-22 09:15发布

我有哪里我使用的是OLEDB源连接到SQL Server 2005表的SSIS包。 除了日期列的所有列NVARCHAR(255)。 我使用Excel目标,并使用SQL语句来创建表在Excel工作簿中,SQL是在Excel连接管理器(有效地创建一个表create table语句),并从列的测绘D B。

无论我做了什么我不断收到这个unicode - 我的来源和目的地之间>非Unicode转换错误。 试图转换到字符串[DT_STR] S> d之间,除去它,改变SQL表VARCHAR到NVARCHAR,仍然可以得到本弗利错误。

因为我有一个SQL语句创建表在Excel中我没有看到任何方式实际的前定义列的数据类型将在Excel工作表的内容。 我想这将是一个默认的元数据,但我不知道。

所以,我的SQL表的目的地,我的Excel表与此SSIS SQL语句的创造之间我怎样才能制止这种错误来了?

我的错误是:

误差在数据流任务[OLE DB源[1]]:柱“MyColumn”不能unicode和非Unicode字符串的数据类型之间进行转换。

而对于所有的nvarchar列。

感谢所有帮助

谢谢

安德鲁

Answer 1:

添加数据转换转换为字符串列从非Unicode(DT_STR)转换为Unicode(DT_WSTR)字符串。

您需要为所有的字符串列做到这一点?



Answer 2:

下面的步骤为我工作:

1)。 右击源任务。

2)。 点击“显示高级编辑器”。 在SSIS源任务高级编辑选项

3)。 进入“输入和输出属性”选项卡。

4)。 选择您所得到的错误输出列。

5)。 它的数据类型将是“字符串[DT_STR]”。

6)。 更改数据类型为“Unicode字符串[DT_WSTR]”。 更改数据类型为Unicode字符串

7)。 保存并关闭。 希望这可以帮助!



Answer 3:

  1. 首先,添加一个数据块转换成数据流图。

  2. 打开数据转换块和蜱的量,误差被示出的列。 下面更改其数据类型为Unicode字符串(DT_WSTR)或任何数据类型,预计和保存。

  3. 前往目的地块。 转到它映射和新创建的元素映射到其相应的地址和保存。

  4. 右键单击该解决方案explorer.select性项目。 选择配置属性,并在其中选择调试。 在此,设置Run64BitRunTime选项设置为false(如Excel不处理64位应用程序非常好)。



Answer 4:

而不是增加一个早先提出的数据转换 ,就可以把nvarchar列的VARCHAR列。 这可以防止具有不必要步骤,并具有较高的性能,则选择。

在选择你的SQL语句的更换dateCAST(date AS varchar([size])) 出于某种原因,这并没有改变输出数据类型。 要做到这一点做到以下几点:

  1. 右键点击您的OLE DB源一步,打开高级编辑。
  2. 转到输出输入特性
  3. 选择输出列
  4. 选择您的列
  5. 根据数据类型属性更改数据类型为字符串[DT_STR]
  6. 您在CAST语句中指定改变长度的长度

这样您的源数据后,将作为一个varchar输出和您的错误就会消失。

资源



Answer 5:

这里缺少的部分是Data Conversion对象。 它应该是在OLE DB源和目标对象之间。



Answer 6:

我经历过这样的情况,当我已经安装了连接到Windows上运行Oracle 12个服务器的Oracle版本12客户端32位客户端。 虽然两个Oracle源和SQLServer目的地是不是Unicode,我一直得到这个消息,因为如果Oracle列都支持Unicode。 我解决了插入数据转换盒的问题,并选择型DT-STR(非Unicode)的VARCHAR2字段和DT-WSTR(Unicode)的数字字段,然后我放弃了“复制”从输出字段名。 请注意,我一直得到错误,因为我已经连接与转换盒源框箭头之前设置的皈依类型。 因此,我不得不切换源框,这个清洗的目标框中的所有错误。



Answer 7:

在上述例子中,我不停地失去了价值,我认为,推迟确认将允许新的数据类型保存为元数据的一部分。

论“Excel连接管理器”连接管理器中设置的延迟确认从属性假。

然后在Excel的数据流目标任务ValidationExternalMetaData从属性设置为False,再次。

现在,这将让你右键点击Excel目标任务,并进入高级编辑器Excel目标 - >最右边的选项卡 - 输入和输出性能。 在外部列文件夹部分,您将能够改变现在的数据类型和有问题的列的长度值,这现在可以保存。

祝好运!



Answer 8:

我一直有同样的问题,并尝试了一切写在这里,但它仍然给了我同样的错误。 原来是在我尝试转换列NULL值。

卸下NULL值来解决我的问题。

干杯,艾哈迈德



文章来源: SSIS Convert Between Unicode and Non-Unicode Error