Vennootschap die gebruik maken van de database Vereenvoudigd Chinees en Traditioneel Chinees versies. Ik gebruikte dit project is de traditionele Chinese versie van SQL Server, maar moeten gebruiken om een ander gebruik van het vereenvoudigd Chinese versie van SQLServer project data, ik heb de gebruikelijke praktijk van de vereenvoudigd Chinese versie van SQL Server in een tabel met gegevens in de traditionele Chinese wordt gebruikt versie van SQLServer, de structuur en de gegevens in een succes. Ik ben begonnen en niet beseffen dat dit een probleem zou worden. Toen begon ik te debuggen van SQL statements is een zeer eenvoudige twee tabellen in verband met de gegevens selectie als volgt:
selecteer tabel1 .*, tabel 2 .*
uit tabel 1
inner join tabel 2 op table2.FK = table1.PK
Logisch zo'n eenvoudige verklaring die zin zal maken van een probleem, maar in Query Analyzer die altijd wordt gevraagd de volgende foutmelding
Server: Msg 446, Level 16, State 9, Lijn 1
Gelijk aan actie kan niet oplossen collatie conflict.
Dan zoeken naar een moment en keek toen naar T-SQL te helpen, weet alleen dat, want ik zal Chinees de gegevens in SQL Server-tabellen de gegevens in de traditionele Chinese tabel die, samen met de oorspronkelijke gegevens, een soort en de invoer, wat resulteert in vereenvoudigde vorm van het soort gegevens nog wordt vereenvoudigd, dus ik kan niet vergelijken met een fout. De oplossing is om te sorteren op naam, vertelde hoe Query Analyzer kan worden gesorteerd. Hier moet een trefwoord in gebruik COLLATE Coliate SQLServer Books Online is verklaard:
COLLATE
Een clausule kan worden toegepast op een database definitie of een kolom-definitie naar de sorteerruimte regels, of worden gebruikt bij het samenstellen tekenreeksexpressie om de projectie definiëren.
Syntax:
COLLATE collation_name
Collation_name :: =
(Windows_collation_name) | (SQL_collation_name)
Parameter
collation_name
Wordt gebruikt in expressies, de definitie van de kolom definitie of database collatie naam. collation_name kan alleen opgeven of Windows_collation_name SQL_collation_name.
Windows_collation_name
Windows verzameling is de verzameling naam. Zie de Windows collatie naam.
SQL_collation_name
SQL collatie is de collatie naam. Zie de SQL collatie naam.
Dus hoe kunnen we weten de naam van de huidige verzameling is wat in feite de naam van de collatie is dat we de database (bijvoorbeeld) kunt u de tijd te kiezen, maar meestal zullen we de oorspronkelijke standaard niet ingesteld het is een verandering, dus als de SQLServer Vereenvoudigd Chinees Vereenvoudigd Chinees zal gebruik maken van de standaard regels sorteren, en als de SQLServer is Traditioneel Chinees Vereenvoudigd Chinees zal gebruik maken van de standaard collatie. We kijken naar de database (bijvoorbeeld) van het pand, het tabblad Algemeen van de bottom line is dat de huidige bundelt. In het geval van wanbetaling, de naam van de Chinees collatie is: Chinese_PRC_CI_AS, en Traditioneel Chinees collatie naam is: Chinese_Taiwan_Stroke_CI_AS, dus we hebben vereenvoudigd als de verzameling naam van de traditionele mix van tijd, zo lang als een uitspraak over wat u wilt gebruik maken van de huidige soort sorteren regels kunnen worden vergeleken, bijvoorbeeld, dat voor de bovenstaande SQL-instructie, de volgende twee methoden om het probleem op te lossen dat er fouten
SELECT Tabel1 .*, tabel 2 .*
VAN Tabel1
INNER JOIN tabel 2 = ON Table2.FK Table1.PK COLLATE Chinese_PRC_CI_AS
SELECT Tabel1 .*, tabel 2 .*
VAN Tabel1
INNER JOIN tabel 2 = ON Table2.FK Table1.PK COLLATE Chinese_Taiwan_Stroke_CI_AS
Dat voor een lange tijd om de problemen veroorzaakt door de collatie conflict op te lossen, als er interesse, waarna de SQL Server Books Online op het concept van het sorteren regels werden gepost met u te delen, om ons te redden en ga dan naar:
Microsoft? SQL Server? 2000 ondersteunt meerdere collaties. Sorteren regels voor het juiste gebruik van taal (zoals de Macedonische of Poolse controle) of het alfabet (zoals de West-Europese talen gebruiken het Latijnse alfabet Latin1_General) tekencodering regels.
Elk SQL Server bundelt specificeert drie eigenschappen:
Voor Unicode-gegevens typen (nchar, nvarchar en ntext) in de sorteervolgorde. Sort order gedefinieerde teken Sorteer volgorde, en de vergelijking operaties op de personages in de waarde van de methode.
Voor niet-Unicode-teken datatypes (char, varchar, en tekst) van de sorteervolgorde.
Gebruikt om niet-Unicode-teken gegevens van code pagina op te slaan.
Hulp kan niet aangegeven Unicode-gegevens typen (nchar, nvarchar en ntext) de bijbehorende code pagina. Voor double-byte Unicode-tekens die door het Unicode-standaard definieert beetje patronen en kan niet worden gewijzigd.
Kan worden aangegeven op welk niveau van SQL Server 2000 bundelt. Installeer SQL Server 2000 kan bijvoorbeeld geef de standaard collatie van de instantie. Elke keer dat je de database, kunnen worden toegewezen aan de standaard collatie van de database. Als u niet opgeeft de verzameling van de database collatie bijvoorbeeld standaard is de standaard collatie. Wanneer de definitie van karakter kolom, variabele of parameter kunt de verzameling van deze objecten. Als de verzameling niet is opgegeven, zal gebruik maken van de standaard database collatie om deze objecten te maken.
Als de SQL Server bijvoorbeeld dat alle gebruikers dezelfde taal te gebruiken, moet de taal worden gekozen om collatie te ondersteunen. Bijvoorbeeld, als alle gebruikers spreken Frans, kiest de Franse bundelt.
Als het exemplaar van SQL Server gebruiker talen moeten worden gekozen op meertalige nodig heeft om de beste ondersteuning te bieden dat de gegevens bundelt. Bijvoorbeeld, als een gebruiker in het algemeen West-Europese talen, selecteer Latin1_General bundelt. Toen de ondersteuning voor meertalige gebruikersinterface, alle teken-gegevens met behulp van Unicode-gegevens typen nchar, nvarchar en ntext is het meest belangrijk. Unicode gericht op het wegnemen van niet-Unicode-char, varchar en tekst data type codepagina conversie problemen. Een overzicht voor de vergelijking omdat de definitie van de operatie orde en Unicode-teken sorteervolgorde, dus bij het gebruik van Unicode-gegevens voor alle types van de kolommen te bereiken, wordt de sortering hebben verschillende regels. Zelfs bij het gebruik van Unicode-gegevens typen karakter data op te slaan, zouden de meeste gebruikers worden gekozen om de verzameling te ondersteunen, om het gebruik van non-Unicode-gegevens type kolom of variabele te bereiken voorkomen.
Sorteren SQL Server-database-engine op te slaan en exploitatie van de definitie van karakter en Unicode-gegevens. Echter, wanneer de gegevens verplaatst naar de toepassing na toepassing voor het sorteren en te vergelijken tekens, gekozen door de computer de controle van de landinstellingen van Windows. Applicatie maakt gebruik van het teken het verzamelen van gegevens van de Windows Landinstellingen controle hebben over een van de Regionale Instellingen bepaalt ook andere projecten, zoals getallen, tijd, datum en valuta-formaat. Voor Microsoft Windows NT? 4.0, Microsoft Windows? 98 en Microsoft Windows 95, kan het bedieningspaneel "Regional Settings" toepassing opgegeven landinstellingen van Windows gebruiken. Voor Microsoft Windows 2000, gebruik maken van de "Control Panel" in de "Landinstellingen" applicatie opgegeven locatie. De landinstellingen van Windows voor meer informatie, zie de website van Microsoft MSDN? Page International Software ontwikkelen voor Windows 95 en Windows NT 4.0.
Aantal niet-Unicode-rangschikking van de gegevens kan gebruiken dezelfde code pagina. Bijvoorbeeld, code 1251 pagina Cyrillische karakter set definieert. Meerdere sorteren regels (zoals Cyrillic_General, Oekraïense en Macedonisch), gebruik de code pagina. Hoewel deze voorschriften zijn de zelfde soort van set bits om de niet-Unicode-karakter data vertegenwoordigen, maar bij de behandeling van woordenboek definities, sorteren en vergelijken regels van toepassing zijn iets anders, en het woordenboek definities op de taal of het alfabet sorteren regels in verband met de juiste tekens te bepalen sequentie.
Omdat SQL Server 2000 Unicode collatie-en non-Unicode sorteervolgorde, dus het zal niet stuiten de niet-Unicode-gegevens naar Unicode collatie en een andere oorzaak van het probleem te specificeren. In eerdere versies van SQL Server op de codetabel nummer, sorteervolgorde en Unicode-teken collatie afzonderlijk worden aangegeven. In eerdere versies van SQL Server ondersteunt ook een ander nummer voor elke code pagina sorteervolgorde, en om te voorzien in bepaalde code's in landinstellingen van Windows niet de sorteervolgorde. In SQL Server 7.0, kunt u ook opgeven welke gegevens selectie voor niet-Unicode-sorteervolgorde andere dan de Unicode sorteervolgorde. Dit zal resulteren in het gebruik en niet-Unicode-gegevens ten opzichte van Unicode-gegevens, sorteren en vergelijken operaties verschillende resultaten opleveren.