|  | Posted by Erland Sommarskog on 02/01/07 22:20 
Ryan (ryanofford@hotmail.com) writes:> The two collations in question are :
 >
 > Latin1_General_CI_AS and
 > SQL_Latin1_General_CP1_CI_AS
 >
 > My ideal way of solving this would be to export the data somewhere and
 > re-create the entire db with a proper script and then import the data
 > again. Is this a sensible option ? What options are available to me
 > and what is the best way of correcting this ? Is there a quick way of
 > doing this ?
 
 You can use ALTER TABLE ALTER COLUMN to change the collation of each
 column. Those commands can easilly be created by running a query against
 syscolumns. However, you cannot change the columns on indexed columns,
 so you need to drop all indexes, including primary keys. And to be able to
 drop primary keys, you must also drop referring foreign keys. And then
 restore these once you're done.
 
 So in the end, it may be better to build an empty database from scripts,
 preferrably taken from version-control, but if there is no such thing,
 you would have to generate scrtips. Whatever, make sure that the script
 has no COLLATE clauses at all, and that the new database uses the server
 collation.
 
 While you could bulk-in and bulk-out, you could also move the data
 by means of INSERT. In this case, it would be better to disable foreign
 keys, and then reenable them once your done.
 
 
 --
 Erland Sommarskog, SQL Server MVP, esquel@sommarskog.se
 
 Books Online for SQL Server 2005 at
 http://www.microsoft.com/technet/prodtechnol/sql/2005/downloads/books.mspx
 Books Online for SQL Server 2000 at
 http://www.microsoft.com/sql/prodinfo/previousversions/books.mspx
  Navigation: [Reply to this message] |