Τα πραγματα είναι όπως στα περιγράφει ο Μάνος. Καλύτερα να το κάνεις μια φορά.
Ο λογικός τρόπος είναι να κάνεις script τη βάση, δημιουργήσεις μια καινούργια βάση με το collation που θες, να τρέξεις τα script που έφτιαξες, αλλά έχεις διορθώσει να μην έχουν collation attributes μέσα και μετά να χρησιμοποιήσεις τα DTS για να μεταφέρεις τα δεδομένα από την μια βάση στην άλλη. Λογικός δρόμος αλλά θα πάρει λίγη ώρα.
Πριν από κάτι μήνες είχα βρει κάπου ένα script που με είχε γλυτώσει όλη τη παραπανω διαδικασία:
SELECT 'ALTER TABLE ' + sysobjects.name + ' ' +
'ALTER COLUMN ' + syscolumns.name + ' ' +
systypes.name + '(' + CAST(syscolumns.length AS VARCHAR) + ') ' +
'COLLATE ' + syscolumns.collation + ' ' +
CASE WHEN syscolumns.isnullable = 1 THEN 'NULL' ELSE 'NOT NULL' END sql
FROM syscolumns
INNER JOIN sysobjects ON sysobjects.id = syscolumns.id
INNER JOIN systypes ON systypes.xtype = syscolumns.xtype
WHERE syscolumns.collation IS NOT NULL
AND sysobjects.name='Customers'
Αυτό το SQL script σου φτιάχνει ένα SQL script που όταν το τρέχεις αλλάζει τα collation στηλών μέσα στην βάση που το τρέχεις. - Προσοχή μην το τρέξεις μέσα στην master! - Αν βάλεις εκεί που λέει 'Customers' το όνομα του table του οποίου θες να αλλάξεις στις στήλες του Collation θα σου βγάλει τα SQL statements που χρειάζεσαι για την αλλαγή.
Αυτά τα statements θα έχουν το collation που τώρα έχουν οι στήλες: Latin1_General_CI_AS και θα το αντικαταστήσεις με το Greek_CI_AS που θες εσύ. Στην συνέχεια τα τρέχεις στην βάση, και ... έτοιμος!
George J.