В предишната си статия обясних основите на SQL Server Collation. Препоръчвам ви първо да прочетете тази статия (ако още не сте). Тук ще ви покажа как да промените съпоставянето на ниво сървър или съпоставянето на ниво екземпляр на SQL Server на съществуващ екземпляр на SQL Server.
Какво е съпоставяне на ниво сървър в SQL Server?
Съпоставянето определя правилата за сортиране, главните букви и свойствата на акцента за данните. Това е важна настройка, която може да повлияе на данните ви в базата данни, така че не се препоръчва да се променя често.
Съпоставянето може да бъде конфигурирано на 4 слоя в SQL Server:
- Ниво на сървъра
- Ниво на база данни
- Ниво на колона
- Ниво на експресия
Забележка: Ако използвате експресно издание на SQL Server, не можете да промените сортирането от SQL_Latin1_General_CP1_CI_AS .
Промяна на съпоставянето на ниво сървър на съществуващ екземпляр на SQL сървър
Този раздел ще описва предпоставките и процеса за промяна на съпоставянето на ниво сървър. То ще бъде променено чрез повторно изграждане на системни бази данни с ново име за съпоставяне.
Предварителни условия
Следвайте точките по-долу, за да изпълните промяната на съпоставянето за производствен екземпляр.
- Изпълнете пълно архивиране на всички бази данни. Ако е възможно, направете моментна снимка на VM, преди да започнете тази процедура.
- Уверете се, че имате всички скриптове за създаване на потребителски бази данни или обекти на база данни като таблици, данни за влизане, потребители, работни места и т.н. Ще създадем всички обекти на базата данни след промяната на съпоставянето.
- Експортирайте всички данни чрез bcp или инструмент на трета страна.
- Запишете конфигурационните стойности на ниво сървър и номера на компилация на екземпляр на SQL Server, включително спешни корекции, приложени към екземпляра.
- Запишете местоположенията на всички системни файлове в базата данни. Това може да е необходимо, ако сте преместили файловете на системната си база данни на друго място.
Нека да разгледаме няколко скрипта, които ще ви помогнат да уловите системните детайли. Копирайте тези резултати в бележник или файл на Excel или просто направете екранна снимка и я запазете за бъдещи справки.
Изпълнете командата по-долу, за да получите всички конфигурации на ниво сървър.
--Get all server level configurations
SELECT * FROM sys.configurations;
Заснемете версията на компилацията на SQL Server, като изпълните заявката по-долу.
--Fetch SQL Server build version
SELECT @@VERSION
GO
SELECT
SERVERPROPERTY('ProductVersion ') AS ProductVersion,
SERVERPROPERTY('ProductLevel') AS ProductLevel,
SERVERPROPERTY('ResourceVersion') AS ResourceVersion,
По същия начин трябва да получим местоположението на файловете на системната база данни, като изпълним посочените по-долу 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'));
След това ще изпълним по-долу T-SQL скриптове, за да съберем информация за съпоставяне на екземпляр на SQL Server и всички бази данни наведнъж.
--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]
Прочетете предишната ми статия за повече информация относно този скрипт.
Сега генерирайте Създаване на скриптове за всички влизания и задания, създадени в екземпляра на SQL Server за бъдеща справка и проверка. Освен това можете да изпълните скрипта по-долу, за да извлечете списъка с всички данни за влизане и задачи от екземпляра на SQL Server.
--Get list of logins
Use master
Go
Select * from syslogins
--Get list of Jobs
USE msdb
Go
Select * from sysjobs
Преизграждане на екземпляр
След като завършите стъпките, споменати в раздела с предпоставките, следващата стъпка е да започнете процеса за промяна на съпоставянето. Тъй като сме направили резервни копия или експортирахме всички данни от потребителски бази данни, трябва да отделим всички потребителски бази данни от екземпляра на SQL Server. Можете също да ги пуснете, ако искате да импортирате експортираните данни в новата база данни. Бих предложил да ги отделите, за да запазите едно безопасно копие на вашите бази данни, така че да можете да ги прикачите след промяната на съпоставянето.
Процесът на промяна на съпоставяне на ниво сървър изисква повторно изграждане на системната база данни. Трябва да предадем ново име за съпоставяне, докато възстановяваме системни бази данни. Операцията за възстановяване на системната база данни изисква настройка на инсталацията на SQL Server. Нека започнем операцията за възстановяване на системната база данни, за да променим съпоставянето на ниво сървър.
Влезте във вашата целева система, за която ще промените съпоставянето. Отворете командния ред на Windows или терминален прозорец на PowerShell. Отворете PowerShell, след което въведете cmd за да използвате помощна програма за командния ред на Windows, както е показано на изображението по-долу. Променете местоположението на вашата директория, където сте поставили вашите инсталационни файлове на 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
Сега съм на мястото, където се записват инсталационните файлове на SQL Server.
След това ще изпълним командата по-долу, за да възстановим всички системни бази данни. Освен това трябва да изпълним командата по-долу с нов параметър за съпоставяне, за да го променим за този екземпляр на SQL Server и всички системни бази данни.
--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
Можете да видите неговия изход на екранната снимка по-долу. Трябва да оставите екрана такъв, какъвто е, и да го оставите да продължи, докато получите работната директория.
Ето, имаме подкана. Това означава, че системната база данни е възстановена с ново съпоставяне за този екземпляр на SQL Server. Нека го проверим.
Уверете се, че SQL Server работи и неговите услуги са стартирани. Сега стартирайте SQL Server Management Studio или sqlcmd за да се свържете с екземпляра на SQL Server. Можете да видите, успешно се свързах с екземпляра на SQL Server, който беше възстановен в горните стъпки. На изображението по-долу можем да видим само системни бази данни.
Изпълнете посочените по-долу T-SQL оператори, за да съберете детайлите за съпоставяне на ниво база данни и сървър. Тази стъпка ще потвърди промяната на съпоставянето на сървърни и системни бази данни.
--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]
Съпоставянето на ниво сървър и база данни за всички системни бази данни използват SQL_Latin1_General_CP1_CS_AS на долната екранна снимка. Тази стъпка потвърждава, че е конфигурирано ново съпоставяне на този екземпляр на SQL Server.
Съпоставянето на ниво сървър е променено на новото съпоставяне. Следващата стъпка е да прикачите всички потребителски бази данни, които са били отделени преди повторното изграждане на системните бази данни. Не забравяйте, че всички съществуващи бази данни, които трябва да бъдат прикачени или възстановени, ще имат същото съпоставяне, при което са били архивирани или отделени. Трябва да го промените ръчно след промяната на съпоставянето на ниво сървър. Въпреки това, всички новосъздадени бази данни ще имат ново съпоставяне по подразбиране.
Прикачих моите потребителски бази данни, както е показано на изображението по-долу.
След като базите данни бъдат прикачени, можете да проверите отново съпоставянето на тези бази данни. Ако искате да промените сортирането на тези бази данни, можете да прочетете предишната ми статия, за да направите това.
Заключение
Ако сте експортирали данни от базите данни, можете да изпълните всички скриптове, които са били генерирани по време на необходимото условие за създаване на обекти на базата данни. След това можете да импортирате експортираните данни в тези новосъздадени бази данни и обекти. Можете да валидирате и променяте конфигурации на ниво сървър според подробностите, които извлечем в раздела с предпоставки.
Можете също да преместите файловете на системната база данни, ако искате да ги запазите на определено място, тъй като възстановяването на системната база данни ще ги създаде на местоположение по подразбиране. Също така е възможно да се изпълнят скриптовете за създаване на входове и работни места с помощта на скриптове, генерирани преди това. Не възстановявайте системните бази данни, тъй като това ще промени новоконфигурираното съпоставяне с по-старото за тази база данни.
Моля, споделете тази статия и ни дайте отзивите си, за да можем да подобрим.