Principale utente con più risposte
Migrazione SQLServer 200 Vs SQLServer 2012 con collaction diverse.

Domanda
-
Salve a tutti.
Un Cliente ha appena affrontato una migrazione del suo SQLServer 2000 vs SQLServer 2012.
Al termine delle operazioni si è accorto di aver impostato (in fase di installazione della nuova istanza) una collaction diversa dall'originaria "SQL_Latin1_General_CP1_CI_AS" nella attuale "Latin1_General_CI_AS" .
Il Cliente si è accorto delle differenza dovendo gestire un errore uscito lavorando in una qualche store procedure.
Posto che potrei sicuramente cambiare la collaction del DB , ho visto che ci sarebbe anche un metodo per cambiare la collaction dell'instanza senza doverla reinstallare: http://blogs.msdn.com/b/psssql/arch...-2008.aspx .
Mi confermare la diversità delle due collaction ? Che problemi potrebbero scaturire da questa diversità ?
Se pensassi di cambiare solo la collaction del DB in cosa potrei andare in contro?
Mi dareste qualche vostra considerazione generale in merito?
Grazie come sempre, ciao
Hunternet
Risposte
-
Ciao,
le due collation sono diverse. Non credo di aver capito quale delle due è quella originaria che vuoi mantenere (quella binaria sarebbe preferibile). Problematiche le potresti incontrare negli confronti e ordinamenti con risultati che non ti aspetti.
Se decidi di cambiare la collation al solo DB non vai incontro a nessun problema.
Devi tenere conto che se crei un nuovo DB, se non la specifichi esplicitamente, la collation sarà quella di default dell'istanza di SQL con il rischio di trovarti un DB con collation binaria e un DB con collation SQL.
Se fai interrogazioni dati su piu DB e hai le collation differenti dovrai specificare nella query stessa la collation da usare per i confronti, nulla più.
Un abbraccio
Daniele
- Proposto come risposta Edoardo BenussiMVP, Moderator giovedì 16 ottobre 2014 10:47
- Contrassegnato come risposta HunterNet79 giovedì 16 ottobre 2014 14:00
-
La prima strada è preferibile.
A modificare tutte le colonne potresti avere dei problemi a causa dei vincoli della clausola COLLATE nel comando ALTER TABLE.
- Contrassegnato come risposta HunterNet79 giovedì 16 ottobre 2014 14:00
Tutte le risposte
-
Ciao,
le due collation sono diverse. Non credo di aver capito quale delle due è quella originaria che vuoi mantenere (quella binaria sarebbe preferibile). Problematiche le potresti incontrare negli confronti e ordinamenti con risultati che non ti aspetti.
Se decidi di cambiare la collation al solo DB non vai incontro a nessun problema.
Devi tenere conto che se crei un nuovo DB, se non la specifichi esplicitamente, la collation sarà quella di default dell'istanza di SQL con il rischio di trovarti un DB con collation binaria e un DB con collation SQL.
Se fai interrogazioni dati su piu DB e hai le collation differenti dovrai specificare nella query stessa la collation da usare per i confronti, nulla più.
Un abbraccio
Daniele
- Proposto come risposta Edoardo BenussiMVP, Moderator giovedì 16 ottobre 2014 10:47
- Contrassegnato come risposta HunterNet79 giovedì 16 ottobre 2014 14:00
-
Ciao e grazie dell'interessamento.
A logica preferirei mantenere la piu nuova "Latin1_General_CI_AS".
Lasciando quindi da parte alcune procedure trovate in rete per un cambio collaction dell'istanza (alla fine credo converrebbe reinstallarla) , pensando di cambiare la collaction del database, se non ho capito male avrei due tipi di strade: creare un nuovo DB con la giusta collaction e travasare tutti i dati all'interno oppure impostare la nuova collaction all'attuale DB con un alter database e successivamente andare a cambiare le impostazioni di ogni colonna.
Tu quale delle due preferiresti ?
E se invece decidessi di lasciare inviariata la collaction l'unico problema sarebbe quindi legato all'utilizzo di questo database con altri DB aventi collaction diversa , compreso (immagino) anche il Tempdb ?!
Grazie in anticipo e ... ricambio l'abbraccio! :-)
Hunternet
-
La prima strada è preferibile.
A modificare tutte le colonne potresti avere dei problemi a causa dei vincoli della clausola COLLATE nel comando ALTER TABLE.
- Contrassegnato come risposta HunterNet79 giovedì 16 ottobre 2014 14:00
-