Jak mogę zmienić domyślne sortowanie SQL Server 2008 R2 Express dla całego serwera i konkretnej bazy danych?
Czy można to zrobić za pomocą interfejsu wizualnego SQL Server Management Studio? W oknie Właściwości serwera (oraz w odpowiednim oknie Właściwości bazy danych) ta właściwość nie jest dostępna do edycji.
Odpowiedzi:
Tak.
Możesz zmienić domyślne sortowanie instancji ekspresowej SQL Server 2008 R2 i poszczególnych baz danych, ale jest to złożone zadanie.
Niestety nie ma opcji wizualnej, aby to zrobić za pośrednictwem SSMS.
Ustawianie i zmiana sortowania serwerów - SQL Server 2008
Upewnij się, że masz wszystkie informacje lub skrypty potrzebne do odtworzenia baz danych użytkowników i wszystkich zawartych w nich obiektów.
Wyeksportuj wszystkie dane za pomocą narzędzia takiego jak Narzędzie bcp. Aby uzyskać więcej informacji, zobacz Importowanie i eksportowanie danych masowych.
Usuń wszystkie bazy danych użytkowników.
Odbuduj główną bazę danych, podając nowe sortowanie we właściwości SQLCOLLATION polecenia setup
Utwórz wszystkie bazy danych i wszystkie zawarte w nich obiekty.
Zaimportuj wszystkie swoje dane.
Ustawianie i zmiana sortowania bazy danych - SQL Server 2008
COLLATION
opcję wCREATE DATABASE
instrukcji podczas tworzenia nowej bazy danych.Podobnie ustaw
COLLATION
opcje wALTER DATABASE
instrukcji, aby zmienić sortowanie istniejącej bazy danych.ALTER DATABASE [database_name] COLLATE SQL_Latin1_General_CP1_CI_AS;
Ustawianie i zmiana sortowania kolumn
źródło
Upewnij się, że naprawdę chcesz „upuścić” bazy danych użytkowników, jak wspomniano w odpowiedzi powyżej. Możesz po prostu „odłączyć” bazy danych. A tak naprawdę, nie możesz nic zrobić, ponieważ przebudowanie mastera skutecznie usuwa wszelkie linki do baz danych użytkowników. Są chwile, kiedy bazy danych są tworzone w pożądanym sortowaniu, ale serwer nie. W takim przypadku nie trzeba odzyskiwać wszystkich baz danych użytkowników z kopii zapasowych.
źródło
Zrobiłem coś takiego i zadziałało, ale musisz pamiętać o indeksach wskazujących na typ danych, ponieważ tekst / varchar / nvarchar musi zostać usunięty, uruchom skrypt, a następnie utwórz indeksy.
to jest moja pierwsza odpowiedź, ułaskaw mój bałagan
źródło
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
ALTER DATABASE
działanieZWROTY
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.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
, itempdb
) 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.źródło