我有哪里我使用的是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列。
感谢所有帮助
谢谢
安德鲁
添加数据转换转换为字符串列从非Unicode(DT_STR)转换为Unicode(DT_WSTR)字符串。
您需要为所有的字符串列做到这一点?
下面的步骤为我工作:
1)。 右击源任务。
2)。 点击“显示高级编辑器”。 在SSIS源任务高级编辑选项
3)。 进入“输入和输出属性”选项卡。
4)。 选择您所得到的错误输出列。
5)。 它的数据类型将是“字符串[DT_STR]”。
6)。 更改数据类型为“Unicode字符串[DT_WSTR]”。 更改数据类型为Unicode字符串
7)。 保存并关闭。 希望这可以帮助!
而不是增加一个早先提出的数据转换 ,就可以把nvarchar列的VARCHAR列。 这可以防止具有不必要步骤,并具有较高的性能,则选择。
在选择你的SQL语句的更换date
与CAST(date AS varchar([size]))
出于某种原因,这并没有改变输出数据类型。 要做到这一点做到以下几点:
- 右键点击您的OLE DB源一步,打开高级编辑。
- 转到输出输入特性
- 选择输出列
- 选择您的列
- 根据数据类型属性更改数据类型为字符串[DT_STR]
- 您在CAST语句中指定改变长度的长度
这样您的源数据后,将作为一个varchar输出和您的错误就会消失。
资源
这里缺少的部分是Data Conversion
对象。 它应该是在OLE DB源和目标对象之间。
我经历过这样的情况,当我已经安装了连接到Windows上运行Oracle 12个服务器的Oracle版本12客户端32位客户端。 虽然两个Oracle源和SQLServer目的地是不是Unicode,我一直得到这个消息,因为如果Oracle列都支持Unicode。 我解决了插入数据转换盒的问题,并选择型DT-STR(非Unicode)的VARCHAR2字段和DT-WSTR(Unicode)的数字字段,然后我放弃了“复制”从输出字段名。 请注意,我一直得到错误,因为我已经连接与转换盒源框箭头之前设置的皈依类型。 因此,我不得不切换源框,这个清洗的目标框中的所有错误。
在上述例子中,我不停地失去了价值,我认为,推迟确认将允许新的数据类型保存为元数据的一部分。
论“Excel连接管理器”连接管理器中设置的延迟确认从属性假。
然后在Excel的数据流目标任务ValidationExternalMetaData从属性设置为False,再次。
现在,这将让你右键点击Excel目标任务,并进入高级编辑器Excel目标 - >最右边的选项卡 - 输入和输出性能。 在外部列文件夹部分,您将能够改变现在的数据类型和有问题的列的长度值,这现在可以保存。
祝好运!
我一直有同样的问题,并尝试了一切写在这里,但它仍然给了我同样的错误。 原来是在我尝试转换列NULL值。
卸下NULL值来解决我的问题。
干杯,艾哈迈德