sql >> Databáze >  >> RDS >> Sqlserver

Jak změnit řazení na úrovni serveru spuštěné instance SQL Server

V mém předchozím článku jsem vysvětlil základy SQL Server Collation. Doporučuji vám nejprve přečíst tento článek (pokud jste to ještě neudělali). Zde vám ukážu, jak změnit řazení na úrovni serveru nebo řazení na úrovni instance SQL Server existující instance SQL Server.

Co je řazení na úrovni serveru v SQL Server?

Porovnání určuje pravidla řazení, velikost písmen a vlastnosti zvýraznění pro data. Je to důležité nastavení, které může ovlivnit vaše data v databázi, takže se nedoporučuje často ho měnit.

Porovnávání lze na serveru SQL Server nakonfigurovat ve 4 vrstvách:

  • Úroveň serveru
  • Úroveň databáze
  • Úroveň sloupce
  • Úroveň výrazu

Poznámka: Pokud používáte SQL Server Express Edition, nemůžete změnit řazení z SQL_Latin1_General_CP1_CI_AS .

Změna řazení na úrovni serveru existující instance SQL Server

Tato část popisuje předpoklady a proces změny řazení na úrovni serveru. Bude změněno přebudováním systémových databází s novým názvem řazení.

Předpoklady

Chcete-li provést změnu řazení pro produkční instanci, postupujte podle následujících bodů.

  1. Spusťte úplnou zálohu všech databází. Pokud je to možné, před zahájením tohoto postupu pořiďte snímek virtuálního počítače.
  2. Ujistěte se, že máte všechny skripty pro vytváření uživatelských databází nebo databázových objektů, jako jsou tabulky, přihlášení, uživatelé, úlohy atd. Po změně řazení vytvoříme všechny databázové objekty.
  3. Exportujte všechna data pomocí bcp nebo jakýkoli nástroj třetí strany.
  4. Zaznamenejte konfigurační hodnoty na úrovni serveru a číslo sestavení instance SQL Serveru včetně oprav hotfix použitých na instanci.
  5. Zaznamenejte všechna umístění systémových databázových souborů. To může být potřeba, pokud jste přesunuli soubory systémové databáze do jiného umístění.

Pojďme se podívat na několik skriptů, které vám pomohou zachytit detaily systému. Zkopírujte tyto výstupy do poznámkového bloku nebo souboru aplikace Excel nebo jednoduše pořiďte snímek obrazovky a uložte jej pro budoucí použití.

Spuštěním níže uvedeného příkazu získáte všechny konfigurace na úrovni serveru.

--Get all server level configurations
SELECT * FROM sys.configurations;

Zachyťte verzi sestavení SQL Server provedením níže uvedeného dotazu.

--Fetch SQL Server build version
SELECT @@VERSION
GO

SELECT  
SERVERPROPERTY('ProductVersion ') AS ProductVersion,  
SERVERPROPERTY('ProductLevel') AS ProductLevel,  
SERVERPROPERTY('ResourceVersion') AS ResourceVersion,  

Podobně bychom měli získat umístění systémových databázových souborů spuštěním níže uvedených příkazů 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'));

Dále spustíme níže uvedené skripty T-SQL, abychom shromáždili informace o řazení instance SQL Serveru a všech databází najednou.

--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]

Přečtěte si můj předchozí článek pro více informací o tomto skriptu.

Nyní vygenerujte Vytvořit skripty pro všechna přihlášení a úlohy vytvořené v instanci SQL Server pro budoucí reference a ověření. Můžete také spustit níže uvedený skript a načíst seznam všech přihlášení a úloh z instance SQL Server.

--Get list of logins
Use master
Go
Select * from syslogins

--Get list of Jobs
USE msdb
Go
Select * from sysjobs

Obnovení instance

Po dokončení kroků uvedených v části předpokladů je dalším krokem zahájení procesu změny řazení. Protože jsme provedli zálohy nebo exportovali všechna data z uživatelských databází, musíme odpojit všechny uživatelské databáze z instance SQL Server. Můžete je také vypustit, pokud chcete exportovaná data importovat do nové databáze. Navrhoval bych je odpojit, abyste si ponechali jednu bezpečnou kopii svých databází, abyste je mohli připojit po změně řazení.

Proces změny řazení na úrovni serveru vyžaduje opětovné sestavení systémové databáze. Při přestavbě systémových databází musíme předat nový název řazení. Obnovení provozu systémové databáze vyžaduje nastavení instalace SQL Server. Začněme operaci opětovného sestavení systémové databáze, aby se změnilo řazení na úrovni serveru.

Přihlaste se do svého cílového systému, pro který budete měnit řazení. Otevřete příkazový řádek Windows nebo okno terminálu PowerShell. Otevřete PowerShell a zadejte cmd k použití nástroje příkazového řádku systému Windows, jak je znázorněno na obrázku níže. Změňte umístění adresáře, kam jste umístili instalační instalační soubory 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

Nyní jsem v umístění, kde jsou uloženy instalační soubory SQL Server.

Dále spustíme níže uvedený příkaz, abychom znovu sestavili všechny systémové databáze. Navíc musíme spustit níže uvedený příkaz s novým parametrem řazení, abychom jej změnili pro tuto instanci SQL Server a všechny systémové databáze.

--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

Jeho výstup můžete vidět na níže uvedeném snímku obrazovky. Měli byste nechat obrazovku tak, jak je, a nechat ji pokračovat, dokud nezískáte pracovní adresář.

Tady máme výzvu. Znamená to, že systémová databáze byla přestavěna s novým řazením pro tuto instanci SQL Server. Pojďme to ověřit.

Ujistěte se, že je spuštěn SQL Server a že jsou spuštěny jeho služby. Nyní spusťte SQL Server Management Studio nebo sqlcmd pro připojení k instanci SQL Server. Můžete vidět, že jsem se úspěšně připojil k instanci SQL Server, která byla přestavěna ve výše uvedených krocích. Na obrázku níže vidíme pouze systémové databáze.

Spusťte níže uvedené příkazy T-SQL, abyste získali podrobnosti o řazení na úrovni databáze a serveru. Tento krok ověří změnu řazení serverových a systémových databází.

--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]

Řazení na úrovni serveru a databáze pro všechny systémové databáze používá SQL_Latin1_General_CP1_CS_AS na níže uvedeném snímku obrazovky. Tento krok ověří, že v této instanci SQL Server bylo nakonfigurováno nové řazení.

Řazení na úrovni serveru bylo změněno na nové řazení. Dalším krokem je připojení všech uživatelských databází, které byly odpojeny před přestavbou systémových databází. Pamatujte, že všechny existující databáze, které mají být připojeny nebo obnoveny, budou mít stejné řazení, pod kterým byly zálohovány nebo odpojeny. Po změně řazení na úrovni serveru jej musíte změnit ručně. I když všechny nově vytvořené databáze budou mít ve výchozím nastavení nové řazení.

Připojil jsem své uživatelské databáze, jak je znázorněno na obrázku níže.

Jakmile jsou databáze připojeny, můžete znovu zkontrolovat řazení těchto databází. Pokud chcete změnit řazení těchto databází, můžete si přečíst můj předchozí článek, jak to udělat.

Závěr

Pokud jste exportovali data z databází, můžete spustit všechny skripty, které byly vygenerovány během předpokladu pro vytvoření databázových objektů. Poté můžete exportovaná data importovat do těchto nově vytvořených databází a objektů. Konfigurace na úrovni serveru můžete ověřit a upravit podle podrobností, které jsme získali v sekci předpokladů.

Soubory systémových databází můžete také přesunout, pokud je chcete ponechat na určitém místě, protože nové sestavení systémové databáze je vytvoří ve výchozím umístění. Je také možné spouštět skripty pro vytváření přihlášení a úloh pomocí skriptů vytvořených dříve. Neobnovujte systémové databáze, protože to změní nově nakonfigurované řazení na starší pro danou databázi.

Sdílejte prosím tento článek a dejte nám svůj názor, abychom se mohli zlepšit.


  1. Import databáze MySQL do MS SQL Serveru

  2. Jiné než číselné znaky, které se vrátí jako kladné při použití ISNUMERIC() na serveru SQL Server

  3. Použijte SET TEXTSIZE k omezení dat vrácených pro každý řádek na serveru SQL Server

  4. JSON_QUERY() vs JSON_VALUE() v SQL Server:Jaký je rozdíl?