Blanding av tradisjonell og forenklet data, SQL Server problemer



Selskap som skal bruke databasen forenklet kinesisk og tradisjonell kinesisk versjoner. Jeg brukte dette prosjektet er den tradisjonelle kinesiske versjonen av SQLServer, men trenger å bruke til en annen bruk forenklet kinesisk versjon av SQLServer prosjektdata, har jeg fulgt den vanlige praksisen i forenklet kinesisk versjon av SQLServer i en datatabell i tradisjonell kinesisk brukes versjon av SQLServer, strukturen og data til en suksess. Jeg startet og var ikke klar over dette ville være et problem. Så begynte jeg å feilsøke SQL-setninger er en veldig enkel to tabeller assosiert med data utvalg som følger:

velger Tabell1 .*, table2 .*

fra Tabell1

indre delta table2 på table2.FK = table1.PK

Logisk slik en enkel uttalelse som vil være fornuftig ut av problemet, men i Query Analyzer som alltid ber følgende feil

Server: Msg 446, Level 16, State 9, Linje 1

Lik til handling kan ikke løse sortering konflikt.

Deretter søke litt, så på T-SQL hjelp, bare vet det fordi jeg vil forenklet kinesisk SQL Server i dataene tabell i tradisjonell kinesisk data i tabellen er, sammen med de opprinnelige dataene, en slags og import, er noe som resulterer i forenklet form den slags dataene fremdeles forenklet, så jeg kan ikke sammenligne med en feil. Løsningen er å sortere etter navn, fortalte hvordan Query Analyzer kan sorteres. Her må bruke ett søkeord COLLATE Coliate i SQLServer Books Online er forklart i:

COLLATE

En klausul kan brukes til en database definisjon eller en kolonne definisjon å definere sortering regler, eller brukes i en rekke uttrykk å bruke sortering reglene for projeksjon.

Syntaks:

COLLATE collation_name

Collation_name :: =

(Windows_collation_name) | (SQL_collation_name)

Parameter

collation_name

Blir brukt i uttrykk, definisjonen av kolonnen definisjon eller database sortering navn. collation_name kan bare angi Windows_collation_name eller SQL_collation_name.

Windows_collation_name

Windows Sortering er sortering navn. Se Windows sortering navnet.

SQL_collation_name

SQL-sortering er sortering navn. Se SQL sortering navnet.

Så hvordan kan vi vite navnet på den nåværende sortering er det, faktisk, er navnet på sortering vi skaper databasen (eksempel) du kan velge tid, men vanligvis er vi de opprinnelige standardinnstillingene, ikke dens en endring, så hvis SQLServer forenklet kinesisk forenklet kinesisk vil bruke standard sortering regler, og hvis SQLServer er tradisjonell kinesisk forenklet kinesisk vil bruke standard sortering. Vi ser på databasen (eksempel) av eiendommen, er den kategorien Generelt i bunnlinjen at gjeldende sortering. Når det gjelder standard, er forenklet kinesisk sortering navn: Chinese_PRC_CI_AS og tradisjonell kinesisk sortering navn er: Chinese_Taiwan_Stroke_CI_AS, så vi har forenklet dersom sortering navnet på den tradisjonelle blandingen av tiden, så lenge en uttalelse om hva du vil bruke den gjeldende slags sortering regler kan sammenlignes, for eksempel at for de ovennevnte SQL-setningen, til følgende to metodene løser problemet at feil

SELECT Tabell1 .*, Table2 .*

FRA Tabell1

INNER JOIN Table2 PÅ Table2.FK = Table1.PK COLLATE Chinese_PRC_CI_AS

SELECT Tabell1 .*, Table2 .*

FRA Tabell1

INNER JOIN Table2 PÅ Table2.FK = Table1.PK COLLATE Chinese_Taiwan_Stroke_CI_AS

At det for lang tid å løse problemer forårsaket av sortering konflikten, hvis det er interessert, hvorpå de SQL Server-bøker på konseptet sortering regler ble lagt til å dele med deg, for å redde oss, og så gå til:

Microsoft? SQL Server? 2000 støtter flere collations. Sortering regler for å kontrollere riktig bruk av språket (som makedonsk eller polsk) eller Alphabet (for eksempel vesteuropeiske språk bruker det latinske alfabetet Latin1_General) tegnkoding regler.

Hver SQL Server sortering angir tre egenskaper:

For Unicode datatyper (nchar, nvarchar, og ntext) i sorteringsrekkefølgen. Sorteringsrekkefølge definert karakter sortere sekvens, og sammenligning operasjoner på karakter verdier av metoden.

For ikke-Unicode-tegn datatyper (røye, VARCHAR, og tekst) av sorteringsrekkefølgen.

Brukes til å lagre ikke-Unicode-tegn data av koden siden.

Hjelp kan ikke angi Unicode datatyper (nchar, nvarchar, og ntext) den tilsvarende koden siden. For dobbelbytetegn Unicode tegn med Unicode-standarden definerer bit mønstre og kan ikke endres.

Kan spesifiseres på ethvert nivå av SQL Server 2000 sortering. Installer SQL Server 2000 eksempel kan angi standard sortering på forekomsten. Hver gang du oppretter databasen, kan være tilordnet standard sortering av databasen. Hvis du ikke angi sortering av databasen forekomsten standard sortering er standard sortering. Når definisjonen av karakter kolonne, variabel eller parameteren kan angi sortering av disse objektene. Dersom sortering ikke er angitt, vil bruke standard databasen sortering å opprette disse objektene.

Hvis SQL Server eksempel at alle brukere bruker det samme språket, bør språket være valgt å støtte sortering. Hvis for eksempel alle brukere snakker fransk, velger Fransk sortering.

Hvis SQL Server-forekomsten brukeren språk bør velges på flerspråklig behov for å gi den beste støtte for sortering. For eksempel, hvis en bruker generelt sett vesteuropeiske språk, velger du Latin1_General sortering. Når støtte for flerspråklige brukere, er alle tegn data ved hjelp av Unicode-datatyper nchar, nvarchar, og ntext viktigste. Unicode har som mål å eliminere ikke-Unicode-røye, VARCHAR og tekst datatypen tegntabellen konvertering vanskeligheter. Sortering for sammenligning fordi definisjonen av operasjonen orden og Unicode tegn sorteringsrekkefølge, så når du bruker Unicode datatyper for å oppnå alle kolonnene, vil sortering har forskjellige regler. Selv når du bruker Unicode datatyper lagre karakter data, bør de velger å støtte sortering til de fleste brukere å unngå å bruke ikke-Unicode-datatype kolonnen eller variabel å oppnå.

Sortering SQL Server-database motoren for å lagre og bruke definisjonen av karakter og Unicode-data. Men når dataene flyttet inn i programmet etter søknad å sortere og sammenligne tegnet valgt av datastyring Windows regionale innstillinger. Programmet bruker tegnet data sortering fra Windows Regionale innstillinger kontrollere en av regionale innstillinger definerer også andre prosjekter, for eksempel tall, tid, dato og valuta format. For Microsoft Windows NT? 4.0, Microsoft Windows? 98 og Microsoft Windows 95, kan bruke kontrollpanelet "Regionale Innstillinger"-program er spesifisert Windows regionale innstillinger. For Microsoft Windows 2000, bruker du "Control Panel" i "Regionale innstillinger" program spesifisert locale. Det Vinduer regionale innstillinger for mer informasjon, se Microsoft-webområdet MSDN Side utvikler internasjonale programvare for Windows 95 og Windows NT 4.0.

Antall ikke-Unicode-sortering av data kan bruke den samme koden siden. For eksempel koden siden 1251 definerer kyrillisk tegnsett. Flere sortering regler (for eksempel Cyrillic_General, ukrainsk og makedonsk) bruke koden siden. Selv om disse reglene er de samme slags biter satt til å representere ikke-Unicode-tegnet data, men når håndtere ordboken definisjoner, sortering og sammenligning gjelder litt andre, og ordboken definisjoner for å avgjøre språket eller alfabetet sortering regler knyttet til riktig tegn sekvens.

Fordi SQL Server 2000 Unicode sortering kontroll og ikke-Unicode sorteringsrekkefølge, så det vil ikke møte den ikke-Unicode-data til Unicode, og angi en annen sortering forårsaket problemet. I tidligere versjoner av SQL Server på koden sidetallet, sorteringsrekkefølge og Unicode-sortering spesifisert separat. Tidligere versjoner av SQL Server støtter også et annet antall for hver kode side sorteringsrekkefølge, og å sørge for visse sider kode i Windows regionale innstillinger ikke sorteringsrekkefølgen. I SQL Server 7.0, kan du også angi dataene utvalget for ikke-Unicode sorteringsrekkefølgen annet enn Unicode sorteringsrekkefølge. Dette vil resultere i bruk og ikke-Unicode-data relative Unicode-data, sortering og sammenligning operasjoner returnere forskjellige resultater.