Eksportu wszystkich danych (w tym loginów, połączonych serwerów, praca agenta SQL DB, ustawień poczty itp), a odbudowa danych na poziomie instancji, a także przeładunek wszystkich danych użytkownika, jest dużo pracy. I nawet po tym wszystkim, że nadal nie ma gwarancji, że można zaktualizować domyślnego sortowania danej bazie danych za pośrednictwem ALTER DATABASE
, ponieważ istnieje kilka warunków, które uniemożliwiają działanie ukończenie (proszę zobaczyć „Zmiana bazy danych z sortowaniem” sekcję ALTER DATABASE
dokumentacji o szczegóły) .
Istnieje jednak nieudokumentowana metoda, która jest znacznie łatwiejsza. Główną wadą jest to, że nie jest obsługiwany. Nie oznacza to, że coś pójdzie nie tak, tylko że jeśli coś zrobi, Microsoft nie pomoże to naprawić (ponieważ nigdy nie gwarantowali, że to zadziała).
Metoda, o której mówię, polega na sqlservr.exe
użyciu -q {new_collation_name}
przełącznika. Jest w tym trochę więcej, ale to jest podstawowa idea. Ta metoda po prostu aktualizuje metadane systemowe, co ma zalety i konsekwencje, a głównymi z nich są:
KORZYŚCI
- całkiem szybko
- ominąć większość ograniczeń, które uniemożliwiają
ALTER DATABASE
działanie
- prawdopodobnie znacznie dokładniejsze niż jakikolwiek skrypt, który ludzie wymyślili przez lata, aby upuszczać i odtwarzać obiekty
ZWROTY
- nieobsługiwane, jeśli coś pójdzie nie tak
VARCHAR
dane mogą ulec zmianie, JEŚLI strona kodowa różni się między starymi i nowymi zestawieniami, a istnieją znaki o wartości 128 - 255 (0x80 - 0xFF), a te znaki nie istnieją jako ten sam znak o tej samej wartości w nowym kodzie strona. Istnieje zatem ryzyko utraty danych, a dane muszą najpierw zostać zbadane, aby upewnić się, że ten warunek nie istnieje. Ale oznacza to również, że istnieje wiele przypadków, w których tylko znaki mają wartości 0–127, które nie są w żadnym niebezpieczeństwie, nawet jeśli strona kodowa ulegnie zmianie.
- Typy tabel zdefiniowane przez użytkownika (UDTT) są pomijane i wymagają ręcznej aktualizacji.
Szczegółowy opis tego, co sqlservr.exe -q
robi metoda, a czego nie robi (w tym szczegółowe informacje na temat sortowania na różnych poziomach oraz potencjalne problemy, na które należy uważać), zobacz mój post:
Zmienianie sortowania instancji, baz danych i wszystkich kolumn we wszystkich bazach danych użytkowników: co może być nie tak?
Aby zmienić tylko instancji (w tym baz danych systemowych: master
, model
, msdb
, i tempdb
) oraz jeden lub więcej baz danych (ale nie wszystkie bazy danych), po prostu odłączyć bazę (y), które chcesz wykluczyć z tej operacji, a następnie ponownie je załączyć po zakończeniu aktualizacji sortowania.