2011-11-16 16 views

risposta

26

Si noti che questa modifica è un aggiornamento della dimensione dei dati, vedere SQL Server table columns under the hood. La modifica aggiungerà una nuova colonna di NVARCHAR, aggiornerà ogni riga copiando il dta dal vecchio VARCHAR alla nuova colonna di NVARCHAR e quindi contrassegnerà la vecchia colonna VARCHAR come rilasciata. SE la tabella è grande, questo genererà un log di grandi dimensioni, quindi preparatevi per questo. Dopo l'aggiornamento, eseguire DBCC CLEANTABLE per recuperare lo spazio utilizzato dalla precedente colonna VARCHAR. Se ti puoi permettere, meglio eseguire ALTER TABLE ... REBUILD, che non solo riacquisterà lo spazio, ma rimuoverà completamente la colonna VARCHAR eliminata fisicamente. L'articolo collegato all'inizio ha più dettagli.

Potresti anche essere interessato ad abilitare Unicode Compression per il tuo tavolo.

7

Assicurarsi che la lunghezza non superi 4000 poiché il massimo per VARCHAR è 8000 mentre NVARCHAR è solo 4K.

2

Il tavolo si ingrandirà. Ogni personaggio nella colonna occuperà il doppio dello spazio da memorizzare. Potresti non notare a meno che il tavolo sia davvero grande.

Le stored procedure/viste/query che funzionano con i dati della colonna potrebbero dover essere modificate per gestire il nvarchar.

17

si può fare su campi chiave primaria non:

ALTER TABLE [TableName] 
ALTER COLUMN [ColumnName] nvarchar(N) null 

Sui campi chiave primaria non funzionerà - si dovrà ricreare la tabella

1

visualizzate tutte le dipendenze per questa tabella come memorizzata procs, funzioni, tabelle temporanee basate su questa tabella e variabili utilizzate per inserti/aggiornamenti, ecc. possono anche essere aggiornati a NVARCHAR. Controlla anche se la tabella è in replica! Questo potrebbe causare una nuova serie di problemi!

Problemi correlati