Open the connection manager for the file. Go to Advanced tab, highlight the suspect column and you can change the length there. I believe the default is 50.
Let me know,
HoggZilla
I can't seem to figure out the answer to this problem. I have a column in a flat file that keeps giving me the truncation error:
Data conversion failed. The data conversion for column "SORTL" returned status value 4 and status text "Text was truncated or one or more characters had no match in the target code page.".
The column size should be 10 characters in length. It has an en-dash in the string that's causing the error, but I verified that the en-dash is part of the 1252 code page, which is what I'm using in my Flat File Connection Manager. I verified that the Flat File Connection Manager shows string, 10 chars on both the External and Output Columns. The destination table is varchar(10). The flat file is delimited by pipes and this is one of the examples that's failing (with pipes):
|OLD MICH|
Again, the dash is not a regular dash, it's an en-dash. The ascii code for the regular dash is 45, and the en-dash is 150.
I've tried upping the size of the column to 20, 30, 40. I've tried changing it to unicode for the same sizes, and still no change. It's failing on the flat file source so it's there that I think something's wrong.
Is there anything different with the en-dash or the fact that the data has an en-dash while being a full 10 characters long? I'm stumped. This is also happening on another flat file for a different package. The column size is 40 characters, but there's no en-dash in that one, and the one record that's failing is taking up the whole 40 characters.
Thanks in advance for any help. If I can provide any more information, let me know.
This Question has been solved and asker verified All Experts Exchange premium technology solutions are available to subscription members.
Experts Exchange has been collecting answers to technology questions since 1996…3 million and counting! If you have a question, chances are we already have your answer.
If you can't find the exact answer you're looking for, ask our exclusive community of 50,000 experts. You’ll get a personalized answer from a trusted professional.
Thousands of free tech tips, tricks, how-to’s and tutorials are available in our peer reviewed articles section. See for yourself how smart our experts are, no login required.
Access the answers to your technology questions today.
30-day free trial. Register in 60 seconds.
Members of the expert community talk about why the experience at Experts Exchange is different than what you will find anywhere else.

Try it out and discover for yourself.
30-day free trial. Register in 60 seconds.
Join the community of experts here and help other tech pros by answering question in your area of expertise. You can earn FREE access to all Experts Exchange's premium features and resources.
pven13,
I'm trying to load in a flat file into a SQL Server database. The data is being piped from a flat file source through a Data Conversion component, and into a OLE DB Destination component. I verified that the flat file source is where the issue is, and I can even put a trash destination right after the Flat File source, and it will still fail. I'm sure the source file is ASCII. I switched it to UTF-8 but it won't even load at that point. I also tried switching it to Unicode. The data I entered into Experts Exchange didn't go over correctly though, so it doesn't look right. It's supposed to be |OLD - MICH| (not including the pipes), which is ten characters. But the - is actually an en-dash (ASCII code 150).
HoggZilla,
Let me know if you can find anything. I've been testing so many different things with this but this file just won't load. I know that if I change the en-dash to a regular dash, it loads ok, so it seems to be related to that dash. But this data is coming from SAP so it has to come through this way. Other columns pull in the en-dash with no problem; just this column doesn't.
Someone told me I had to try recreating the connection manager and the flat file source from scratch, so that might be what I have to do. There's over 150 columns in this flat file though so I'm hoping I don't need to go through that.
Is the en-dash considered part of code page 1252? HoggZilla, did you use an nvarchar or varchar data type, and did you set the column size to 10? If so, I might just have to go in and redo the component.
I'm going to try a test like you did and see if it works that way. So at least I'll know it's not the text file. I'll respond soon.
acperkins,
Here's the output of a hex editor:
|OLD ⬠MICH|
7C 4F 4C 44 20 E2 80 93 20 4D 49 43 48 7C
The en-dash ends up showing three characters: an a with a caret, a euro sign (I think), and an apostrophe. Just in case Experts Exchange doesn't show them. Not sure what this means but I do see all the other values are accounted for.
Here's my package and a sample file. I have all the records in there that are failing and a couple that aren't are at the bottom. The couple that aren't don't have the en-dash; at least not in the SORTL field that I'm having trouble with. The field that has the name (it might be NAME1) has en-dashes for the rows that are failing but it's not failing on that field.
acperkins,
For your first response back about the size, I tried setting it to 11, 12, 20, 30, 40, and none of them worked. I thought maybe there was something it was doing but it didn't help. Also on your second post, the data is missing the spaces between the en-dash.
Take a look and let me know what you guys think. I might end up calling the people responsible for the data and have them change the en-dashes to regular dashes if it gets us our data. Either way I'd love to know if this is possible.
acperkins,
I'm not sure what you mean by your last comment. When you said they're not using ASCII 150 are you talking about the records that are succeeding? Because they definitely are using ASCII 150 for the records that are failing (the SORTL column at least). Also, what additional characters are they adding?
I will post the relevant part of your file at the end of this comment.
But if you open it up in a hex editor the first 6 records do not contain ASCII 150 and contain extra characters. The last 2 records have dashes and not ASCII 150 character.
In fact there are no ASCII 150 (0x96) character anywhere in that file.
It should be also noted that the file contains a BOM, I am not sure if you noticed. This could be significant in how it is read by most text editors. Again a Hex editor is your best friend.
acperkins,
Thanks for taking a look at this for me. I wasn't aware there was a BOM at the beginning of the file, but I hope SSIS is able to ignore it when importing the data. What's interesting is I opened the original file in notepad and removed all the records before the YC124 record. So there should be no BOM in the file at that point. If there is, it must be because notepad ignores it and deleting info does not delete it.
Also, I took the flat file (the same text file that I uploaded) and pulled out the character that in the hex editor created the â¬. I pasted it into SQL Server and did an ASCII() check on it and it came back as 150. I also copied it and pasted it into Word and checked it out, and it's most definitely an en-dash. I created a macro in Word that created a string with an en-dash and then compared that string with the en-dash I copied in and they matched.
I think I'm just confused as to the different characters that keep appearing on hex editors. I used two online editors. One showed two dashes like -- in place of the single dash, and one showed three periods like ... which I think is because it couldn't show special characters (the hex value of the first period was E2, the same as the â. The last two didn't look like ¬ or anything close to it. Why is everything reading it differently and what is SSIS trying to do with it. When I check the preview of the data, I see just a single dash and none of the other characters I keep seeing.
>> If there is, it must be because notepad ignores it <<
I am not usre if Notepad uses it to interpret the file or ignores it. I suspect the last.
>>deleting info does not delete it.<<
Correct, it does not. I just checked. The following is still there:

>>I think I'm just confused as to the different characters that keep appearing on hex editors.<<
That is because any characters greated then 128 fall in the category of the Extended ASCII values and there are some debate as to which is the correct one, although I believe this has now been made standard. The easiest way to find out what ASCII value is represented with a given font is to use the age-old trick of ALT+nnn (where nnn is typed on your numeric key pad. In order to get ANSI values it is ALT+nnnn. So for example:
ASCII:
Alt+150 = û
Alt+150 = ù
ANSI:
Alt+0150 = (the infamous en dash)
Alt+0151 = (em dash)
Here is a good link:
http://homepages.rootsweb.
Notice how there is no equivalent of the en dash or em dash in ASCII.
I would focus on the actual Hex or decimal value and this may get you out of trouble as far as how fonts represent certain characters.
I actually had the data team change all the en-dashes to regular dashes and the data loads without a problem now. We have a process in place now to notify the business if an en-dash is present in the data. Hopefully one day I'll find out how I can get these en-dashes into SSIS but thanks for everyone's help. I think acperkins, you were on the right track with the last comment and I may take another look at collation and code pages to see if there's something else I can do down the road.
Business Accounts
Answer for Membership
by: pven13Posted on 2009-08-10 at 01:08:18ID: 25057898
What kind of task are you trying to perform? Are you moving data from source file to destination table? Or do you use another task inbetween? Have you tried using a Data Conversion transformation? That often solves problems like these. Are you sure your source file is ASCII? If it is UTF8, then you could try converting it to ASCII or Unicode (and in case of Unicode, use an nvarchar column). By the way, your example OLD MICH is 11 characters, not 10...