We’ve just noticed 2 of our servers have been set up using SQL_Latin1_General_CP1_CI_AS and Latin1_General_CI_AS.
I’ve created a script which compares two sources of data again each other (as it’s a simple SELECT statement I haven’t included it, it uses the same columns but from different sources) when I tried to union them together I received the collate error.
Msg 468, Level 16, State 9, Line 2
Cannot resolve the collation conflict between
“SQL_Latin1_General_CP1_CI_AS” and “Latin1_General_CI_AS” in the UNION operation.
One of the sources is a table which is being populated by an SSIS package, is there a way of adapting the SSIS project to convert the “SQL_Latin1_General_CP1_CI_AS” format to “Latin1_General_CI_AS” before it’s sent to the destination table?
Thanks!
Your error message looks like your UNION is in a single SQL statement?
e.g SELECT … UNION … SELECT
As Shiva described, within your SSIS Data Flow, you can use two (or more) OLE DB Source objects and combine them with a “Union All” transformation. Each OLE DB Source object will have just a single SELECT with no UNION clause. This design also has advantages in design/maintenance (unions on column names, no need to fill every column from every source) and runtime throughput.
I think you also need to use this technique on the OLE DB Source objects.
http://blog.stevienova.com/2009/04/16/ssis-pulling-data-from-a-non-default-collation-db-to-a-default-collation-db/