januar 28, 2022

{coding}Syn

når du utvikler et program eller skrive en kode I SQL database system, er det avgjørende å forstå hvordan data vil bli sortert og sammenlignet. DU kan lagre dataene dine på et bestemt språk, eller DU vil KANSKJE AT SQL Server skal behandle små og små bokstaver separat. Microsoft har gitt EN SQL Server-innstilling kalt Sortering for å kontrollere og løse slike krav.

Hva Er Sortering I SQL Server?

vi kan sette sorteringen på ulike nivåer I SQL Server som gitt nedenfor.

  • Servernivå
  • Databasenivå
  • Kolonnenivå
  • Uttrykksnivå

sorteringen På Servernivå kan noen ganger kalles SORTERING PÅ SQL Server-Forekomstnivå.

sorteringen På Databasenivå arves fra innstillingen for sortering på servernivå hvis du ikke velger en bestemt sortering under opprettelsen av databasen. Du kan også endre sortering på databasenivå senere. Merk at endring av databasesortering vil bli brukt for bare kommende eller nye objekter som vil bli opprettet etter sorteringsendringen.

Ny sortering vil ikke endre eksisterende data lagret i tabeller som ble sortert med den siste sorteringstypen. Applikasjonsteamet trenger videre planlegging for å håndtere denne lagrede datakonverteringen på grunn av den nye sorteringsinnstillingen.

Det er flere måter å gjøre det på. En er å kopiere dataene fra den eksisterende tabellen til en ny tabell opprettet med den nye sorteringen og deretter erstatte den gamle tabellen med den nye. Du kan også flytte tabelldataene til en ny database ved å ha en ny sortering, og erstatte den gamle databasen med den nye.

MERK: Endre sortering er en kompleks oppgave, og du bør unngå det med mindre du har en obligatorisk business case.

Hvordan Finne Og Endre Databasesortering I SQL Server?

La oss gå videre og sjekke sorteringen AV SQL Server-Forekomsten og alle databaser som er vert for den forekomsten. Du kan sjekke sortering ved å gå til vinduet database eller forekomst nivå egenskaper VED HJELP AV SQL Server Management Studio eller ved å utføre under t-SQL-setningen. Sorteringen for hver database lagres i systemobjektet sys.databaser-vi får tilgang til den for å få denne informasjonen.

--Check Database CollationSELECT name, collation_name FROM sys.databases GO --Check Server or Instance level CollationSELECT SERVERPROPERTY('Collation') As 

jeg har utført ovennevnte T-SQL-setning og fikk underutgangen. Vi kan se at alle databaser og servernivå sortering har de samme innstillingene Som SQL_Latin1_General_CP1_CI_AS. Det betyr database sorteringer har blitt arvet av servernivå sortering mens du oppretter dem, og standardverdien er ikke endret.

Utdata AV utførelsen AV T-SQL-Setningen

nå, la meg vise deg hvordan du sjekker databasesortering ved HJELP AV GUI I SQL Server Management Studio.

koble FØRST TIL SQL Server-forekomsten ved HJELP AV SQL Server Management Studio. Utvid forekomstnoden etterfulgt av Mappen Databaser. Høyreklikk måldatabasen og velg Egenskaper:

velg egenskaper i måldatabasen

Du vil få Under Database Egenskaper vinduet.

klikk Nå Kategorien Alternativer fra venstre panel. Du vil få flere egenskaper innstillinger i høyre panel. Sortering er den første egenskapen til denne siden-du kan se at den er den samme som den var i T-SQL-skriptet ovenfor.

på Samme måte kan du klikke sql Server-forekomstnoden og høyreklikke egenskapene for forekomstnivå for å se sorteringen på servernivå.

server - nivå sortering

hvis du vil endre denne sorteringen til en ny sortering, trenger du bare å klikke På Sortering-rullegardinmenyen og velge alternativet du trenger. Kontroller at du har gjort en full backup av databasen før du gjør det.

endre sorteringen til en ny

jeg har valgt en lignende sortering Med saksfølsom SQL_Latin1_General_CP1_CS_AS for denne databasen og klikket OK for å bruke DEN. Merk: Kontroller at ingen er koblet til måldatabasen under denne prosedyren, ellers må du bytte modus til enkeltbruker og endre denne konfigurasjonen.

Databaseegenskaper

Du kan også endre denne databasesorteringen ved HJELP AV T-SQL-setningen. For det, bruk COLLATE-klausulen I ALTER DATABASE-setningen.

først har vi byttet databasen til enkeltbrukermodus, deretter endret sorteringen, og til slutt flyttet databasen til flerbrukermodus.

--Change Database Collation using T-SQL USE master; GO Alter DATABASE SET SINGLE_USER WITH ROLLBACK IMMEDIATEGOALTER DATABASE COLLATE SQL_Latin1_General_CP1_CI_AS; GOAlter DATABASE SET MULTI_USER

Liste Ut Alle Støttede Sorteringer I SQL Server

Denne delen viser deg hvordan du finner alle tilgjengelige sorteringer I SQL Server. Først, la meg vise deg hvordan du får listen over alle støttede sorteringer FOR SQL Server-forekomsten.

SQL Server har en systemfunksjon kalt fn_helpcollations () som du kan bruke til å hente alle sorteringer.

Kjør kommandoen nedenfor for å vise listen.

--Display the list of all collations SELECT name, description FROM fn_helpcollations()

Vi kan se alle 5508 støttede sorteringer i utdataseksjonen. Hvis du ikke er sikker på hvilken sortering du skal velge, kan DU bruke WHERE-setningsdelen i skriptet nedenfor til å filtrere ut alle mulige sorteringer som kan settes til databasen.

alle støttede sorteringer

La oss si at du må lagre dataene DINE PÅ AMERIKANSK engelsk og vil AT SQL Server skal håndtere det i et saksfølsomt format. Du kan bruke kommandoen nedenfor for å hente listen over mulige og støttede sorteringer for søket:

--Display the list of all collations with WHERE clause SELECT Name, Description FROM fn_helpcollations() WHERE Name like 'SQL_Latin1%' AND Description LIKE '%case-sensitive%'

utgangen viser bare 10 sorteringer som tilfredsstiller søket ditt. Du kan bruke skriptet ovenfor til å filtrere ut ulike sorteringer.

filtrering av sorteringene

Virkningen Av Å Endre Databasesortering På Spørringsutgang

i denne delen vil jeg vise deg forskjellen mellom de to utgangene til samme spørring når de utføres med forskjellige sorteringer.

Først vil jeg lage en database som heter MSSQL med en sortering (SQL_Latin1_General_CP1_CS_AS). Da vil jeg kjøre samme spørring to ganger for å få utgangen. Senere vil jeg endre sorteringen Til SQL_Latin1_General_CP1_CI_AS og igjen kjøre de samme spørringene for å få produksjonen. Du kan sammenligne både utganger og forstå virkningen av å endre en database sortering. Så, la oss starte med databaseopprettelse.

Start det nye databaseopprettingsvinduet som vist på bildet nedenfor. Du kan også opprette denne databasen VED HJELP AV T-SQL. Etter det kan du se databasenavnet og dets datafiler. Nå klikker du på den andre fanen på venstre side for å bytte til vinduet sortering.

starte et nytt databaseopprettingsvindu

du kan se at sorteringsnavnet for denne databasen er standard. Det betyr at denne databasen vil arve sortering fra servernivå sorteringstype. Klikk På Rullegardinmenyen Sortering for å velge den nye sorteringen.

velge ny sortering

jeg har valgt under sortering SQL_Latin1_General_CP1_CS_AS for denne databasen-ikke standard en. Klikk OK for å fortsette med databaseopprettingen.

velge ny sortering

Nå, sjekk databasen sortering for en nyopprettet database. Vi kan se Det Er SQL_Latin1_General_CP1_CS_AS som vi har valgt i forrige trinn.

kontrollere databasen sortering for nyopprettede database

I SQL_Latin1_General_CP1_CS_AS STÅR CS for saksfølsom modus, og CI står for saksfølsom modus. Nå kan du kjøre enten under T-SQL-koden eller hvilken som helst kode for å få utgangen.

jeg har utført samme kommando to ganger. Det første skriptet filtrerer kolonnenavnene med en VERDI SYS i store bokstaver, mens det andre skriptet vil filtrere samme kolonne med samme verdi sys i små bokstaver. Utdata-delen viser at det første skriptet ikke har vist noen utdata, mens det andre skriptet har vist utdataene på grunn av sin saksfølsomme oppførsel.

Select * from sysusersWhere name='SYS'GoSelect * from sysusersWhere name='sys'GO
Virkningen Av Å Endre Database Sortering På Spørring Utgang

Nå vil vi endre sorteringen av denne databasen Til den saksfølsomme sorteringen SQL_Latin1_General_CP1_CI_AS ved å utføre t-SQL-setningene nedenfor. Du kan også endre DET via GUI ved å gå Til Vinduet Databaseegenskaper I SQL Server Management Studio.

--Change database collation to SQL_Latin1_General_CP1_CI_ASUSE master; GO Alter DATABASE SET SINGLE_USER WITH ROLLBACK IMMEDIATEGOALTER DATABASE COLLATE SQL_Latin1_General_CP1_CI_AS; GOAlter DATABASE SET MULTI_USER

jeg har utført skriptet ovenfor i ett skudd, og databasesorteringen ble vellykket endret til en ny sortering med saksfølsom støtte.

ny sortering har case-ufølsom støtte

du kan bekrefte denne endringen ved å kjøre skriptene nedenfor for å sjekke sorteringen av den nyopprettede databasen MSSQL. Vi kan se at den nye sorteringen er satt for denne databasen i bildet nedenfor.

ny sortering er satt for databasen

Vi vil igjen kjøre den samme T-SQL-setningen før du endrer sorteringen for å se effekten av denne endringen. Som vi kan se nå, er BEGGE T-SQL-setningene i utgangen.

Virkningen Av Å Endre Database Sortering På Spørring Utgang

Konklusjon

jeg håper det er tydelig at sorteringen I SQL Server er avgjørende. Vi har definert hvilken innvirkning det etterlater hvis du gjør endringer i sortering på alle nivåer I SQL Server. Gjør alltid riktig planlegging og test endringene i ditt lavere livssyklusmiljø først.

Følg med for min neste artikkel, der jeg vil vise deg en trinnvis metode for å endre servernivå sortering.

Legg igjen en kommentar

Din e-postadresse vil ikke bli publisert.