SSIS Convert Between Unicode and Non-Unicode Error

后端 未结 8 1827
别跟我提以往
别跟我提以往 2020-12-24 04:52

I have an ssis package where I am using an OLEDB source linking to SQL Server 2005 table. All columns except a date column are NVARCHAR(255). I am using an Excel destination

相关标签:
8条回答
  • 2020-12-24 04:58

    I experienced this condition when I had installed Oracle version 12 client 32 bit client connected to an Oracle 12 Server running on windows. Although both of Oracle-source and SqlServer-destination are NOT Unicode, I kept getting this message, as if the oracle columns were Unicode. I solved the problem inserting a data conversion box, and selecting type DT-STR (not unicode) for varchar2 fields and DT-WSTR (unicode) for numeric fields, then I've dropped the 'COPY OF' from the output field name. Note that I kept getting the error because I had connected the source box arrow with the conversion box BEFORE setting the convertion types. So I had to switch source box and this cleaned all the errors in the destination box.

    0 讨论(0)
  • 2020-12-24 05:00
    1. First, add a data conversion block into your data flow diagram.

    2. Open the data conversion block and tick the column for which the error is showing. Below change its data type to unicode string(DT_WSTR) or whatever datatype is expected and save.

    3. Go to the destination block. Go to mapping in it and map the newly created element to its corresponding address and save.

    4. Right click your project in the solution explorer.select properties. Select configuration properties and select debugging in it. In this, set the Run64BitRunTime option to false (as excel does not handle the 64 bit application very well).

    0 讨论(0)
  • 2020-12-24 05:01

    Instead of adding an earlier suggested Data Conversion you can cast the nvarchar column to a varchar column. This prevents you from having an unnecessary step and has a higher performance then the alternative.

    In the select of your SQL statement replace date with CAST(date AS varchar([size])). For some reason this does not yet change the output data type. To do this do the following:

    1. Right click your OLE DB Source step and open the advanced editor.
    2. Go to Input and Output Properties
    3. Select Output Columns
    4. Select your column
    5. Under Data Type Properties change DataType to string [DT_STR]
    6. Change Length to the length you specified in your CAST statement

    After doing this your source data will be output as a varchar and your error will disappear.

    Source

    0 讨论(0)
  • 2020-12-24 05:03

    The missing piece here is Data Conversion object. It should be in between OLE DB Source and Destination object.

    0 讨论(0)
  • 2020-12-24 05:05

    Below Steps worked for me:

    1). right click on source task.

    2). click on "Show Advanced editor". advanced edit option for source task in ssis

    3). Go to "Input and Output Properties" tab.

    4). select the output column for which you are getting the error.

    5). Its data type will be "String[DT_STR]".

    6). Change that data type to "Unicode String[DT_WSTR]". Changing the data type to unicode string

    7). save and close. Hope this helps!

    0 讨论(0)
  • 2020-12-24 05:07

    Add Data Conversion transformations to convert string columns from non-Unicode (DT_STR) to Unicode (DT_WSTR) strings.

    You need to do this for all the string columns...

    0 讨论(0)
提交回复
热议问题