28 tammikuun, 2022

{coding}Sight

kun kehität sovellusta tai kirjoitat koodia SQL-tietokantajärjestelmään, on ratkaisevan tärkeää ymmärtää, miten tietoja lajitellaan ja verrataan. Voit tallentaa tietosi tietyllä kielellä tai haluat ehkä, että SQL Server käsittelee kirjainkokoiset ja kirjainkokoiset tiedot erikseen. Microsoft on toimittanut SQL Server-asetuksen nimeltä Collation tällaisten vaatimusten hallitsemiseksi ja käsittelemiseksi.

mikä on SQL Serverin kollaasi?

voimme asettaa SQL Serverin eri tasoille alla esitetyn mukaisesti.

  • Palvelintaso
  • Tietokantataso
  • Saraketaso
  • Lauseketaso

palvelintason vertailua voidaan joskus kutsua SQL Server-Instanssitason vertailuksi.

tietokannan tasokooste periytyy palvelimen tasokoosteasetuksesta, jos et valitse mitään tiettyä vertailua tietokannan luomisen aikana. Voit myös muuttaa tietokantatason vertailua myöhemmin. Huomaa, että muuttuvaa tietokantakokoelmaa sovelletaan vain tuleviin tai uusiin kohteisiin, jotka luodaan vertailumuutoksen jälkeen.

Uusi vertailutapa ei muuta edellisen vertailutyypin mukaan lajiteltuihin taulukoihin tallennettuja tietoja. Sovellustiimi tarvitsee jatkosuunnittelua tämän tallennetun tiedon muuntamisen käsittelemiseksi uuden vertailuasetuksen vuoksi.

on olemassa useita tapoja tehdä se. Yksi on kopioida tiedot olemassa olevasta taulukosta uuteen taulukkoon, joka on luotu uudella vertailulla, ja korvata vanha taulukko uudella. Voit myös siirtää taulukon tiedot uuteen tietokantaan ottamalla uuden vertailun, ja korvata vanhan tietokannan uudella.

huomautus: kollaasin muuttaminen on monimutkainen tehtävä ja sinun tulisi välttää sitä, ellei sinulla ole pakollista liiketapausta.

Miten löytää ja muuttaa Tietokantakoostumusta SQL Server-palvelussa?

mennään eteenpäin ja tarkistetaan SQL Server-instanssin ja kaikkien kyseisessä instanssissa isännöityjen tietokantojen kokoelma. Voit tarkistaa vertailua avaamalla tietokannan tai instanssin tason ominaisuudet-ikkunan SQL Server Management Studion avulla tai yksinkertaisesti suorittamalla alla olevan T-SQL-lausekkeen. Kunkin tietokannan vertailua tallennetaan järjestelmän objekti sys.tietokannat-käytämme sitä saadaksemme nämä tiedot.

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

olen toteuttanut yllä olevan T-SQL-lausekkeen ja saanut alla olevan ulostulon. Voimme nähdä, että kaikissa tietokannoissa ja palvelintason vertailussa on samat asetukset kuin SQL_Latin1_General_CP1_CI_AS. Se tarkoittaa, että tietokantakollektiivit ovat periytyneet palvelintason vertailussa niitä luotaessa, eikä oletusarvoa ole muutettu.

T-SQL-lausekkeen suorituksen ulostulo

nyt, anna minun näyttää, miten tarkistaa tietokannan vertailua GUI SQL Server Management Studio.

yhdistä ensin SQL Server-instanssiin SQL Server Management Studion avulla. Laajenna instanssisolmu, jota seuraa tietokannat-kansio. Napsauta kohdetietokantaa hiiren kakkospainikkeella ja valitse Ominaisuudet:

valitse Ominaisuudet kohdetietokannasta

saat alla tietokannan Ominaisuudet ikkuna.

Napsauta nyt Asetukset-välilehteä vasemmasta paneelista. Saat useita ominaisuuksia asetukset oikeanpuoleisessa paneelissa. Kokoelma on ensimmäinen ominaisuus tämän sivun – näet, että se on sama kuin se oli edellä T-SQL script.

vastaavasti voit klikata SQL Server-instanssisolmua ja hiiren kakkospainikkeella instanssitason ominaisuuksia nähdäksesi palvelintason vertailun.

palvelintason vertailu

jos haluat muuttaa tätä vertailua uuteen vertailuun, sinun tarvitsee vain klikata vertailua pudotusvalikosta ja valitse haluamasi vaihtoehto. Varmista, että olet tehnyt täyden varmuuskopion tietokannasta ennen sen tekemistä.

malliston muuttaminen uuteen

olen valinnut samanlaisen kokoelman kirjainherkkä sql_latin1_general_cp1_cs_as tähän tietokantaan ja napsautin OK soveltaa sitä. Huomautus: Varmista, että kukaan ei ole kytketty kohdetietokantaan tämän menettelyn aikana, muuten, sinun täytyy vaihtaa tila yhden käyttäjän yksi ja muuttaa tätä määritystä.

tietokannan ominaisuudet

voit myös muuttaa tätä tietokantakokoelmaa käyttämällä T-SQL-lauseketta. Tätä varten, käytä collate lauseke ALTER tietokanta lauseke.

ensin on vaihdettu tietokanta yhden käyttäjän tilaan, sitten muutettu vertailua ja lopuksi siirretty tietokanta monen käyttäjän tilaan.

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

listaa kaikki SQL Serverin Tuetut Kollaatiot

tämä osio näyttää, miten löydät kaikki SQL Serverin käytettävissä olevat kollaatiot. Ensimmäinen, haluan näyttää sinulle, miten saada luettelon kaikista tuetuista collations SQL Server instance.

SQL Server-palvelimessa on järjestelmäfunktio nimeltä fn_helpcollations (), jolla voi hakea kaikki collaatiot.

suorita alla oleva komento nähdäksesi luettelon.

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

näemme kaikki 5508 Tuetut kollaatiot tuotososiossa. Jos et ole varma, minkä kollaation valitset, voit käyttää alla olevan komentosarjan WHERE-lauseketta suodattaaksesi kaikki mahdolliset kollaatiot, jotka voidaan asettaa tietokantaan.

kaikki tuetut kollaatiot

Oletetaan, että sinun täytyy tallentaa tietosi Yhdysvaltain Englanti kielellä ja haluat SQL Server käsitellä sitä kirjainkoossa muodossa. Voit käyttää alla olevaa komentoa hakeaksesi luettelon mahdollisista ja tuetuista kollaatioista kyselyäsi varten.:

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

lähtö näyttää vain 10 collations täyttää kyselyn. Voit käyttää yllä skripti suodattaa eri collations.

suodatus collations

muuttuvan Tietokantakokoelman vaikutus kyselyn ulostuloon

tässä osiossa näytän sinulle eron saman kyselyn kahden lähdön välillä, kun ne suoritetaan eri kollaatioilla.

ensin luon MSSQL-nimisen tietokannan, jossa on kollaasi (SQL_Latin1_General_CP1_CS_AS). Sitten ajan saman kyselyn kahdesti saada lähtö. Myöhemmin, aion muuttaa vertailua sql_latin1_general_cp1_ci_as ja jälleen ajaa samat kyselyt saada niiden lähtö. Voit vertailla molempia tuotoksia ja ymmärtää tietokantakokoelman muuttamisen vaikutukset. Niin, aloitetaan tietokannan luominen.

Käynnistä Uusi tietokannan luonti-ikkuna alla olevan kuvan mukaisesti. Voit myös luoda tämän tietokannan T-SQL. Sen jälkeen, näet tietokannan nimi ja sen tiedostot. Nyt, napsauta Toista välilehteä vasemmalla puolella paneeli vaihtaa vertailuun ominaisuus ikkuna.

käynnistetään uusi tietokannan luonti-ikkuna

voit nähdä, että vertailunimi tämän tietokannan on oletuksena. Se tarkoittaa, että tämä tietokanta perii vertailua palvelintason vertailutyypistä. Valitse uusi mallisto napsauttamalla mallisto-pudotusvalikosta.

valitsemalla uusi kokoelma

olen valinnut alla kokoelma SQL_Latin1_General_CP1_CS_AS tähän tietokantaan – ei oletuksena yksi. Napsauta OK jatkaaksesi tietokannan luomista.

valitsemalla uusi kokoelma

nyt, tarkista tietokannan vertailusta äskettäin luotu tietokanta. Voimme nähdä, että se on SQL_Latin1_General_CP1_CS_AS kuten olemme valinneet edellisessä vaiheessa.

tarkistetaan tietokantakokoelma äskettäin luodulle tietokannalle

sanassa SQL_Latin1_General_CP1_CS_AS CS tarkoittaa kirjainherkkää tilaa ja CI kirjainherkkää tilaa. Nyt voit suorittaa joko alla olevan T-SQL-koodin tai minkä tahansa koodin saada lähtö.

olen suorittanut saman käskyn kahdesti. Ensimmäinen skripti suodattaa sarakkeiden nimet arvo SYS isoilla kirjaimilla, kun taas toinen skripti suodattaa saman sarakkeen saman arvo sys pienillä kirjaimilla. Tuloste-osio osoittaa, että ensimmäinen skripti ei ole näyttänyt tulostetta, kun taas toinen skripti on näyttänyt tulosteen sen kirjainkokoisen käyttäytymisen vuoksi.

Select * from sysusersWhere name='SYS'GoSelect * from sysusersWhere name='sys'GO
muuttuvan Tietokantakokoelman vaikutus Kyselytulokseen

nyt, muutamme kokoelma tämän tietokannan tapaus-tunteeton kokoelma SQL_Latin1_General_CP1_CI_AS suorittamalla alla T-SQL lausuntoja. Voit myös muuttaa sitä GUI: n kautta pääsemällä SQL Server Management Studion tietokannan ominaisuudet-ikkunaan.

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

olen toteuttanut yllä olevan käsikirjoituksen yhdellä otolla, ja tietokantakoostumus onnistuttiin muuttamaan uuteen koontiin, jossa on kirjainkoostumaton tuki.

uusi mallisto, jolla on tapauskohtaista tukea

voit tarkistaa tämän muutoksen suorittamalla alla olevat skriptit tarkistaaksesi vastaperustetun MSSQL-tietokannan vertailua. Voimme nähdä, että uusi kokoelma on asetettu tähän tietokantaan alla olevassa kuvassa.

tietokannalle asetetaan uusi vertailukohta

suoritamme uudelleen saman T-SQL-lausekkeen ennen kuin muutamme vertailua nähdäksemme tämän muutoksen vaikutuksen. Kuten näemme nyt, molemmat T-SQL-lausekkeet ovat tuotoksessa.

muuttuvan Tietokantakokoelman vaikutus Kyselytulokseen

johtopäätös

toivon, että on ilmeistä, että SQL Serverin kollaasi on ratkaiseva. Olemme määritelleet, mitä vaikutuksia se jättää, jos teet muutoksia vertailuun millään tasolla SQL Server. Tee aina asianmukainen suunnittelu ja testaa muutokset alemman elinkaaren ympäristössä ensin.

Stay tuned for my next article, where I will show you a step-by-step method to change server-level Collection.

Vastaa

Sähköpostiosoitettasi ei julkaista.