W poprzednim artykule wyjaśniłem podstawy sortowania SQL Server. Proponuję najpierw przeczytać ten artykuł (jeśli jeszcze tego nie zrobiłeś). Tutaj pokażę, jak zmienić sortowanie na poziomie serwera lub sortowanie na poziomie instancji SQL Server istniejącej instancji SQL Server.
Co to jest sortowanie na poziomie serwera w SQL Server?
Sortowanie określa reguły sortowania, wielkość liter i właściwości akcentu dla danych. Jest to ważne ustawienie, które może wpływać na dane w bazie danych, dlatego nie zaleca się częstej zmiany.
Sortowanie można skonfigurować na 4 warstwach w SQL Server:
- Poziom serwera
- Poziom bazy danych
- Poziom kolumny
- Poziom ekspresji
Uwaga: Jeśli używasz SQL Server Express Edition, nie możesz zmienić sortowania z SQL_Latin1_General_CP1_CI_AS .
Zmień sortowanie istniejących instancji serwera SQL na poziomie serwera
W tej sekcji opisano wymagania wstępne i proces zmiany sortowania na poziomie serwera. Zostanie to zmienione przez przebudowanie systemowych baz danych z nową nazwą sortowania.
Wymagania wstępne
Postępuj zgodnie z poniższymi punktami, aby wykonać zmianę sortowania dla instancji produkcyjnej.
- Uruchom pełną kopię zapasową wszystkich baz danych. Jeśli to możliwe, zrób migawkę maszyny wirtualnej przed rozpoczęciem tej procedury.
- Upewnij się, że masz wszystkie skrypty do tworzenia baz danych użytkowników lub obiektów baz danych, takich jak tabele, loginy, użytkownicy, zadania itp. Po zmianie sortowania utworzymy wszystkie obiekty bazy danych.
- Eksportuj wszystkie dane za pomocą bcp lub jakiekolwiek narzędzie innej firmy.
- Zapisuj wartości konfiguracji na poziomie serwera i numer kompilacji instancji SQL Server, w tym poprawki zastosowane do instancji.
- Zapisz wszystkie lokalizacje plików systemowych baz danych. Może to być potrzebne, jeśli przeniosłeś swoje systemowe pliki bazy danych w inne miejsce.
Rzućmy okiem na kilka skryptów, które pomogą Ci uchwycić szczegóły systemu. Skopiuj te dane wyjściowe do notatnika lub pliku Excel lub po prostu zrób zrzut ekranu i zapisz go na przyszłość.
Uruchom poniższe polecenie, aby uzyskać wszystkie konfiguracje na poziomie serwera.
--Get all server level configurations
SELECT * FROM sys.configurations;
Przechwyć wersję kompilacji SQL Server, wykonując poniższe zapytanie.
--Fetch SQL Server build version
SELECT @@VERSION
GO
SELECT
SERVERPROPERTY('ProductVersion ') AS ProductVersion,
SERVERPROPERTY('ProductLevel') AS ProductLevel,
SERVERPROPERTY('ResourceVersion') AS ResourceVersion,
Podobnie powinniśmy uzyskać lokalizację plików bazy danych systemu, uruchamiając poniższe instrukcje T-SQL.
SELECT name, physical_name AS Database_file_location
FROM sys.master_files
WHERE database_id IN (DB_ID('master'), DB_ID('model'), DB_ID('msdb'), DB_ID('tempdb'));
Następnie uruchomimy poniższe skrypty T-SQL, aby zebrać informacje o sortowaniu instancji SQL Server i wszystkich baz danych w jednym ujęciu.
--Get existing collation of SQL Server Instance and all databases
SELECT name, collation_name
FROM sys.databases
GO
--Get existing server level collation
SELECT SERVERPROPERTY('Collation') As [Instance Level Collation]
Przeczytaj mój poprzedni artykuł, aby uzyskać więcej informacji o tym skrypcie.
Teraz wygeneruj Utwórz skrypty dla wszystkich loginów i zadań utworzonych na instancji SQL Server w celu przyszłego odniesienia i walidacji. Możesz także uruchomić poniższy skrypt, aby pobrać listę wszystkich loginów i zadań z instancji SQL Server.
--Get list of logins
Use master
Go
Select * from syslogins
--Get list of Jobs
USE msdb
Go
Select * from sysjobs
Przebudowa instancji
Po wykonaniu kroków wymienionych w sekcji wymagań wstępnych następnym krokiem jest rozpoczęcie procesu zmiany sortowania. Ponieważ wykonaliśmy kopie zapasowe lub wyeksportowaliśmy wszystkie dane z baz danych użytkowników, musimy odłączyć wszystkie bazy danych użytkowników od instancji SQL Server. Możesz je również usunąć, jeśli chcesz zaimportować wyeksportowane dane do nowej bazy danych. Sugeruję odłączenie ich, aby zachować jedną bezpieczną kopię swoich baz danych, aby móc je dołączyć po zmianie sortowania.
Proces zmiany sortowania na poziomie serwera wymaga przebudowy bazy danych systemu. Podczas przebudowy baz danych systemu musimy przekazać nową nazwę sortowania. Odbudowa działania bazy danych systemu wymaga skonfigurowania instalacji programu SQL Server. Zacznijmy operację przebudowy bazy danych systemu, aby zmienić sortowanie na poziomie serwera.
Zaloguj się do systemu docelowego, dla którego będziesz zmieniać sortowanie. Otwórz wiersz polecenia systemu Windows lub okno terminala PowerShell. Otwórz PowerShell, a następnie wpisz cmd aby użyć narzędzia wiersza polecenia systemu Windows, jak pokazano na poniższym obrazku. Zmień lokalizację katalogu, w którym umieściłeś pliki instalacyjne programu SQL Server.
--Open Windows Command prompt
Cmd
--Change directory where you have placed SQL Server setup files
Cd <Full path>
--My location was C:\Manvendra\SQL2019\Developer_ENU so i executed below cmd
cd C:\Manvendra\SQL2019\Developer_ENU
Teraz jestem w lokalizacji, w której zapisane są pliki instalacyjne SQL Server.
Następnie uruchomimy poniższe polecenie, aby odbudować wszystkie systemowe bazy danych. Dodatkowo musimy uruchomić poniższe polecenie z nowym parametrem sortowania, aby zmienić je dla tej instancji SQL Server i wszystkich baz danych systemu.
--Rebuild system databases with new collation. Replace all values in <> with your desired value.
Setup /QUIET /ACTION=REBUILDDATABASE /INSTANCENAME=<InstanceName>
/SQLSYSADMINACCOUNTS=<accounts> / SAPWD= <StrongPassword>
/SQLCOLLATION=<CollationName>
--I replaced all values and executed the below command with collation SQL_Latin1_General_CP1_CS_AS
Setup /QUIET /ACTION=REBUILDDATABASE /INSTANCENAME=MSSQLSERVER /SQLSYSADMINACCOUNTS=WIN-AFNHJ3L1D6E\Administrator /[email protected] /SQLCOLLATION=SQL_Latin1_General_CP1_CS_AS
Możesz zobaczyć jego wynik na poniższym zrzucie ekranu. Powinieneś pozostawić ekran bez zmian i pozwolić, aby ekran działał, dopóki nie uzyskasz katalogu roboczego.
Tutaj mamy podpowiedź. Oznacza to, że baza danych systemu została przebudowana z nowym sortowaniem dla tej instancji SQL Server. Zweryfikujmy to.
Upewnij się, że SQL Server jest uruchomiony i uruchomione są jego usługi. Teraz uruchom SQL Server Management Studio lub sqlcmd aby połączyć się z instancją SQL Server. Widzisz, udało mi się połączyć z instancją SQL Server, która została przebudowana w powyższych krokach. Na poniższym obrazku widzimy tylko systemowe bazy danych.
Uruchom poniższe instrukcje T-SQL, aby zebrać szczegóły sortowania na poziomie bazy danych i serwera. Ten krok zatwierdzi zmianę sortowania bazy danych serwera i systemu.
--Get collation of the SQL Server Instance and all databases
SELECT name, collation_name
FROM sys.databases
GO
--Get an existing server-level collation
SELECT SERVERPROPERTY('Collation') As [Instance Level Collation]
Sortowanie na poziomie serwera i na poziomie bazy danych dla wszystkich systemowych baz danych używa SQL_Latin1_General_CP1_CS_AS na poniższym zrzucie ekranu. Ten krok potwierdza, że nowe sortowanie zostało skonfigurowane w tej instancji SQL Server.
Sortowanie na poziomie serwera zostało zmienione na nowe. Kolejnym krokiem jest dołączenie wszystkich baz danych użytkowników, które zostały odłączone przed przebudowaniem baz danych systemu. Pamiętaj, że wszystkie istniejące bazy danych, które mają zostać dołączone lub przywrócone, będą miały takie samo sortowanie, w jakim zostały utworzone lub odłączone. Musisz to zmienić ręcznie po zmianie sortowania na poziomie serwera. Chociaż wszystkie nowo utworzone bazy danych będą miały domyślnie nowe sortowanie.
Załączyłem swoje bazy danych użytkowników, jak pokazano na poniższym obrazku.
Po dołączeniu baz danych możesz ponownie sprawdzić ich sortowanie. Jeśli chcesz zmienić sortowanie tych baz danych, możesz przeczytać mój poprzedni artykuł, aby to zrobić.
Wniosek
Jeśli wyeksportowałeś dane z baz danych, możesz wykonać wszystkie skrypty, które zostały wygenerowane podczas tworzenia obiektów bazy danych. Następnie możesz zaimportować wyeksportowane dane do nowo utworzonych baz danych i obiektów. Możesz sprawdzać i modyfikować konfiguracje na poziomie serwera zgodnie ze szczegółami, które pobraliśmy w sekcji wymagań wstępnych.
Możesz także przenieść systemowe pliki bazy danych, jeśli chcesz zachować je w określonej lokalizacji, ponieważ przebudowa systemowej bazy danych utworzy je w domyślnej lokalizacji. Możliwe jest również wykonanie skryptów do tworzenia loginów i zadań za pomocą wcześniej wygenerowanych skryptów. Nie przywracaj systemowych baz danych, ponieważ zmieni to nowo skonfigurowane sortowanie na starszą dla tej bazy danych.
Udostępnij ten artykuł i podziel się z nami swoją opinią, abyśmy mogli ulepszyć.