sql >> Database teknologi >  >> RDS >> Sqlserver

Sådan ændres serverniveausortering af kørende SQL Server-instans

I min tidligere artikel har jeg forklaret det grundlæggende i SQL Server Collation. Jeg vil foreslå, at du først læser den artikel (hvis du ikke allerede har gjort det). Her vil jeg vise dig, hvordan du ændrer sorteringen på server-niveau eller SQL Server-instansniveau-sorteringen af ​​en eksisterende SQL Server-instans.

Hvad er Server Level Collation i SQL Server?

Sortering bestemmer sorteringsregler, store og små bogstaver og accentegenskaber for data. Det er en vigtig indstilling, der kan påvirke dine data inde i databasen, så det anbefales ikke at blive ændret ofte.

Sortering kan konfigureres på 4 lag i SQL Server:

  • Serverniveau
  • Databaseniveau
  • Kolonneniveau
  • Udtryksniveau

Bemærk: Hvis du bruger SQL Server Express edition, kan du ikke ændre sorteringen fra SQL_Latin1_General_CP1_CI_AS .

Skift serverniveausortering af eksisterende SQL Server-instans

Dette afsnit vil beskrive forudsætningerne og processen for at ændre sorteringen på serverniveau. Det vil blive ændret ved at genopbygge systemdatabaser med et nyt sorteringsnavn.

Forudsætninger

Følg nedenstående punkter for at udføre sorteringsændringen for en produktionsforekomst.

  1. Kør en komplet sikkerhedskopi af alle databaser. Hvis det er muligt, skal du tage et VM-øjebliksbillede, før du starter denne procedure.
  2. Sørg for, at du har alle scripts til at oprette brugerdatabaser eller databaseobjekter som tabeller, logins, brugere, job osv. Vi vil oprette alle databaseobjekter efter sorteringsændringen.
  3. Eksporter alle data ved hjælp af bcp eller ethvert tredjepartsværktøj.
  4. Optag konfigurationsværdier på serverniveau og SQL Server-forekomstens build-nummer inklusive hotfixes anvendt på forekomsten.
  5. Optag alle placeringer af systemdatabasefiler. Dette kan være nødvendigt, hvis du har flyttet dine systemdatabasefiler til en anden placering.

Lad os tage et kig på et par scripts, som vil hjælpe dig med at fange systemdetaljerne. Kopier disse output til en notesblok eller en Excel-fil, eller tag blot et skærmbillede og gem det til fremtidig reference.

Kør nedenstående kommando for at få alle konfigurationer på serverniveau.

--Hent alle konfigurationer på serverniveauSELECT * FROM sys.configurations; 

Optag SQL Server build-versionen ved at udføre nedenstående forespørgsel.

--Hent SQL Server build versionSELECT @@VERSIONGOSELECT SERVERPROPERTY('ProductVersion ') AS ProductVersion, SERVERPROPERTY('ProductLevel') AS ProductLevel, SERVERPROPERTY('ResourceVersion') AS ResourceVersion,  

På samme måde bør vi få systemdatabasefilernes placering ved at køre nedenstående T-SQL-sætninger.

VÆLG navn, fysisk_navn AS Database_fil_placering FRA sys.master_files WHERE database_id IN (DB_ID('master'), DB_ID('model'), DB_ID('msdb'), DB_ID('tempdb')); 

Dernæst vil vi køre nedenstående T-SQL-scripts for at samle sorteringsoplysninger om SQL Server-instansen og alle databaser i ét skud.

--Hent eksisterende sortering af SQL Server Instance og alle databaserSELECT name, collation_name FROM sys.databases GO --Hent eksisterende server level collationSELECT SERVERPROPERTY('Collation') Som [Instance Level Collation] 

Læs min tidligere artikel for mere information om dette script.

Generer nu Opret scripts for alle logins og job oprettet på SQL Server-instansen til fremtidig reference og validering. Du kan også køre nedenstående script for at hente listen over alle logins og job fra SQL Server-instansen.

--Hent liste over loginsBrug masterGoSelect * fra syslogins--Hent liste over jobUSE msdbGoSelect * fra sysjobs 

Genopbygning af forekomst

Når du har afsluttet de trin, der er nævnt i forudsætningsafsnittet, er næste trin at starte processen for sorteringsændringen. Da vi har taget sikkerhedskopier eller eksporteret alle data fra brugerdatabaser, er vi nødt til at frakoble alle brugerdatabaser fra SQL Server-instansen. Du kan også droppe dem, hvis du vil importere de eksporterede data til den nye database. Jeg vil foreslå, at du frakobler dem for at opbevare en sikker kopi af dine databaser, så du kan vedhæfte dem efter sorteringsændringen.

Processen med at ændre en sortering på serverniveau kræver genopbygning af systemdatabasen. Vi skal sende et nyt sorteringsnavn, mens vi genopbygger systemdatabaser. Genopbygning af systemdatabasedrift kræver installation af SQL Server. Lad os starte genopbygningen af ​​systemdatabasen for at ændre sorteringen på serverniveau.

Log ind på dit målsystem, som du vil ændre sortering for. Åbn Windows-kommandoprompten eller et PowerShell-terminalvindue. Åbn PowerShell, og skriv derefter cmd for at bruge et Windows kommandoprompt-værktøj som vist på billedet nedenfor. Skift din mappeplacering, hvor du har placeret dine SQL Server-installationsopsætningsfiler.

--Åbn Windows KommandopromptCmd--Skift mappe, hvor du har placeret SQL Server-opsætningsfilerCd --Min placering var C:\Manvendra\SQL2019\Developer_ENU, så jeg udførte nedenfor cmdcd C:\Manvendra \SQL2019\Developer_ENU

Nu er jeg på det sted, hvor SQL Server-installationsfilerne er gemt.

Dernæst vil vi køre nedenstående kommando for at genopbygge alle systemdatabaser. Derudover skal vi køre nedenstående kommando med en ny sorteringsparameter for at ændre den for denne SQL Server-instans og alle systemdatabaser.

--Genopbyg systemdatabaser med ny sortering. Erstat alle værdier i <> med din ønskede værdi.Setup /QUIET /ACTION=REBUILDDATABASE /INSTANCENAME=/SQLSYSADMINACCOUNTS= / SAPWD=/SQLCOLLATION=--jeg erstattede alle værdier og udførte nedenstående kommando med sortering SQL_Latin1_General_CP1_CS_ASSetup /QUIET /ACTION=REBUILDDATABASE /INSTANCENAME=MSSQLSERVER /SQLSYSADMINACCOUNTS=WIN-AFNHJ3L1D6E\Administrator /[email protected] /SQLCSLCOLLASATION=1_QLCOLLASATION=1_SQLCOLLAS

Du kan se dens output i nedenstående skærmbillede. Du bør lade skærmen være som den er og lade skærmen fortsætte, indtil du får arbejdsbiblioteket.

Her har vi fået prompten. Det betyder, at systemdatabasen er blevet genopbygget med en ny sortering for denne SQL Server-instans. Lad os bekræfte det.

Sørg for, at SQL Server kører, og dens tjenester er lanceret. Start nu SQL Server Management Studio eller sqlcmd for at oprette forbindelse til SQL Server-instansen. Du kan se, jeg har oprettet forbindelse til SQL Server-instansen, som blev genopbygget i ovenstående trin. Vi kan kun se systemdatabaser på billedet nedenfor.

Kør nedenstående T-SQL-sætninger for at indsamle oplysninger om sortering på database- og serverniveau. Dette trin vil validere ændringen af ​​server- og systemdatabasesorteringen.

--Hent sortering af SQL Server-forekomsten og alle databaserSELECT name, collation_name FROM sys.databases GO --Hent en eksisterende samling på serverniveauSELECT SERVERPROPERTY('Collation') Som [Instance Level Collation] 

Samling på server- og databaseniveau for alle systemdatabaser bruger SQL_Latin1_General_CP1_CS_AS i nedenstående skærmbillede. Dette trin validerer, at en ny sortering blev konfigureret på denne SQL Server-instans.

Sorteringen på serverniveau er blevet ændret til den nye sortering. Det næste trin er at vedhæfte alle brugerdatabaser, som blev frakoblet før genopbygning af systemdatabaserne. Husk, at alle eksisterende databaser, som skal vedhæftes eller gendannes, vil have den samme sortering, som de blev sikkerhedskopieret eller frakoblet. Du skal ændre det manuelt efter sorteringsændringen på serverniveau. Selvom alle nyoprettede databaser vil have en ny sortering som standard.

Jeg har vedhæftet mine brugerdatabaser som vist på billedet nedenfor.

Når databaserne er vedhæftet, kan du kontrollere sammenstillingen af ​​disse databaser igen. Hvis du vil ændre sammenstillingen af ​​disse databaser, kan du læse min tidligere artikel for at få dette gjort.

Konklusion

Hvis du har eksporteret data fra databaserne, kan du udføre alle scripts, som blev genereret under forudsætningen for at oprette databaseobjekterne. Derefter kan du importere de eksporterede data i disse nyoprettede databaser og objekter. Du kan validere og ændre konfigurationer på serverniveau i henhold til de detaljer, vi hentede i afsnittet med forudsætninger.

Du kan også flytte systemdatabasefiler, hvis du vil beholde dem på en bestemt placering, da en genopbygning af systemdatabasen vil oprette dem på en standardplacering. Det er også muligt at udføre scripts for at oprette logins og jobs ved hjælp af scripts genereret før. Gendan ikke systemdatabaser, da det vil ændre den nyligt konfigurerede sortering til den ældre for den pågældende database.

Del venligst denne artikel og giv os din feedback, så vi kan forbedre os.


  1. Kræver ODP.NET installation af Oracle Client

  2. Kan ikke oprette forbindelse til MySQL 4.1+ ved hjælp af gammel godkendelse

  3. Data bliver udfyldt fra en bestemt tabels dato i stedet for alle tabeller i sqlite

  4. Opret en database i SQL Server (T-SQL)