2011-11-16 18 views

Odpowiedz

26

Należy pamiętać, że ta zmiana jest aktualizacją rozmiaru danych, patrz SQL Server table columns under the hood. Zmiana doda nową kolumnę NVARCHAR, zaktualizuje każdy wiersz, kopiując dta ze starego VARCHAR do nowej kolumny NVARCHAR, a następnie oznaczy starą kolumnę VARCHAR jako opuszczoną. JEŻELI tabela jest duża, wygeneruje duży dziennik, więc przygotuj się na to. Po aktualizacji uruchom DBCC CLEANTABLE, aby odzyskać przestrzeń używaną przez poprzednią kolumnę VARCHAR. Jeśli możesz sobie na to pozwolić, lepiej uruchom ALTER TABLE ... REBUILD, która nie tylko odzyska miejsce, ale także całkowicie usunie fizyczną usuniętą kolumnę VARCHAR. Powiązany artykuł na początku zawiera więcej szczegółów. Może być także zainteresowany włączeniem Unicode Compression dla twojego stołu.

7

Upewnij się, że długość nie przekracza 4000, ponieważ maksymalna wartość dla VARCHAR wynosi 8000, podczas gdy NVARCHAR ma tylko 4K.

2

Stół będzie większy. Każdy znak w kolumnie zajmuje dwa razy więcej miejsca do przechowywania. Możesz nie zauważyć, chyba że stół jest naprawdę duży.

Zapisane procedury/widoki/zapytania współpracujące z danymi kolumny mogą wymagać modyfikacji w celu obsługi nvarchar.

17

Można to zrobić na non pierwotnych kluczowych dziedzinach:

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

na podstawowym kluczowych dziedzinach nie będzie działać - trzeba będzie odtworzyć stół

1

sprawdzić wszystkie zależności do tego stołu, przechowywane procs, funkcje, tabele temp oparte na tej tabeli i zmienne używane do wstawiania/aktualizacji itp. mogą również wymagać aktualizacji do NVARCHAR. Sprawdź również, czy tabela jest w replikacji! To może spowodować nowy zestaw problemów!

Powiązane problemy