det kan komme en tid når du må endre databasen for å bruke en annen sortering.
du kan gjøre dette ved å bruke følgende kodebit:
USE master;GOALTER DATABASE COLLATE SQL_Latin1_General_CP1_CI_AS ;GO--Verify the collation setting.SELECT name, collation_nameFROM sys.databasesWHERE name = N'';GO
når du utfører koden ovenfor, kan du komme over følgende feil:
denne feilen oppstår når databasen er I Flerbrukermodus eller når det er objekter som refererer til databasen.
for å overvinne denne feilen må du utføre følgende trinn:
- Sett databasen til enkeltbrukermodus;
- Utfør de nødvendige endringene i databasen, i dette tilfellet endre sortering;
- Sett databasen tilbake til flerbrukermodus.
så kan ovennevnte utdrag oppdateres til følgende:
USE master;GO-- Set to single-user modeALTER DATABASE SET SINGLE_USER WITH ROLLBACK IMMEDIATEGO -- change collationALTER DATABASE COLLATE SQL_Latin1_General_CP1_CI_AS; GO -- Set to multi-user modeALTER DATABASE SET MULTI_USER WITH ROLLBACK IMMEDIATE;GO --Verify the collation setting. SELECT name, collation_name FROM sys.databases WHERE name = N'MyOptionsTest'; GO
ovennevnte prosess kan brukes hvis du nettopp har opprettet en ny database, uten data inne, uten å angi ønsket databasesortering.
Endre Sortering Til Tabellkolonner
i databasen kan det være tabellkolonner med forskjellig sortering, nemlig tabellkolonner av typene char, varchar, text, nchar, nvarchar og ntext. Hvis du vil vise alle tabellkolonner med gjeldende sorteringer, kan du kjøre følgende spørring:
SELECT t.name, c.name, c.collation_nameFROM sys.columns c INNER JOIN sys.tables t ON t.object_id = c.object_idWHERE c.object_id IN (SELECT object_id FROM sys.objects WHERE type = 'U') AND c.collation_name != 'NULL'ORDER BY t.name, c.name
Før du gjør noen endringer i disse kolonnene sorteringer, må du sjekke om endringene vil generere noen problemer til programmene.
hvis du vil endre en kolonnesortering til en ny, kan du kjøre følgende spørring:
ALTER TABLE ALTER COLUMN <ColumnType> COLLATE <NewCollation>
i tilfelle en feil, må du kontrollere at referansebegrensninger og indekser er droppet; du kan gjenskape dem etter at sorteringen er endret.
Endre Sortering Og Eksisterende Data
hva med eksisterende data? For å være sikker på at eksisterende data kan hentes etter endring av sortering, må du følge trinnene nedenfor:
- eksporter gamle data fra hver tabell, enten VED HJELP AV SQL Server Import and Export data wizard eller bcp;
- slipp og opprett tabellene på nytt; og
- importer tidligere eksporterte data.
i følgende eksempel vil vi opprette en database med sortering LATIN1_GENERAL_CI_AI, legge til en tabell Produkter med en kolonne Navn(nvarchar (50)) og sette inn noen data på gresk.
CREATE DATABASE COLLATE LATIN1_GENERAL_CI_AI;-- -- Create Products table and add some dataUSE GOCREATE TABLE .( (50) NULL) ON GOinsert into dbo.Products (name) values (N'Προϊόν 1');insert into dbo.Products (name) values (N'Προϊόν 2');insert into dbo.Products (name) values (N'Προϊόν 3');insert into dbo.Products (name) values (N'Προϊόν 4');insert into dbo.Products (name) values (N'Προϊόν 5');
Ser du etter alle produkter som begynner på» Προϊόν » (Gresk Ord for produkt), får Vi 5 resultater:
SELECT *FROM dbo.ProductsWHERE Name LIKE N'Προϊόν%';-- Results:Name--------------------------------------------------Προϊόν 1Προϊόν 2Προϊόν 3Προϊόν 4Προϊόν 5
Trinn 1. Eksporter Data
la oss eksportere data i Produkttabell ved hjelp av bcp, som står for massekopiering av programverktøy (bcp) og massekopier data mellom En forekomst Av Microsoft SQL Server og en datafil i et brukerdefinert format. Dette verktøyet kan brukes til å importere et stort antall nye rader I SQL Server-tabeller eller å eksportere data ut av tabeller i adata-fil. For å gjøre det, trenger vi følgende kommando:
bcp CollationTest.dbo.Products out Products.txt -c -T
der -c
utfører operasjonen ved hjelp av en datatype for tegn og -T
angir at bcp-verktøyet kobles TIL SQL Server med en klarert tilkobling ved hjelp av integrert sikkerhet.
Trinn 2. Endre Database Sortering
i neste trinn vil vi endre database sortering TIL GREEK_CI_AI, med følgende uttalelse:
-- Alter database collationALTER DATABASE COLLATE GREEK_CI_AI;
Trinn 3. Slipp Og Gjenopprett Produkttabellen
USE GODROP TABLE .;GOCREATE TABLE .( (50) NULL) ON GO
Trinn 4. Importer tidligere eksporterte data
for å gjøre det, bruker vi igjen bcp-verktøyet, men i stedet for parameteren out
bruker vi parameteren in
:
bcp CollationTest.dbo.Products in Products.txt -c -T