Mix di dati tradizionale e semplificato, problemi di SQL Server



Società che utilizzano il database cinese semplificato e cinese tradizionale versioni. Ho usato questo progetto è la versione tradizionale cinese di SQLServer, ma è necessario utilizzare un altro usare la versione cinese semplificato dei dati del progetto SQLServer, ho seguito la prassi usuale della versione cinese semplificato di SQLServer in una tabella dati in cinese tradizionale è usato versione di SQL Server, la struttura ei dati in un successo. Ho cominciato e non realizzare questo sarebbe un problema. Poi ho iniziato a eseguire il debug di istruzioni SQL è molto semplice due tabelle associate con la selezione di dati come segue:

selezionare tabella1 .*, tabella2 .*

da tabella1

INNER JOIN tabella2 su table2.FK = table1.PK

Logicamente come una semplice dichiarazione che dare un senso di qualsiasi problema, ma in Query Analyzer che chiede sempre il seguente errore

Server: Msg 446, livello 16, stato 9, riga 1

Pari al ricorso non può risolvere il conflitto di confronto.

Poi la ricerca di un attimo e poi guardò aiutare T-SQL, so solo che voglio perché i dati in cinese semplificato tabelle di SQL Server i dati in tabella tradizionale cinese è, insieme con i dati originali, una sorta e le importazioni, con conseguente forma semplificata il tipo di dati è ancora in semplificata, e quindi non si può paragonare a un errore. La soluzione è quella di ordinare per nome, raccontò come Query Analyzer possono essere ordinati. Qui sarà necessario utilizzare una parola chiave COLLATE Coliate in SQL Server documentazione in linea viene spiegata in:

COLLATE

Una clausola può essere applicata alla definizione di database o definizioni per definire le regole di confronto della colonna, o utilizzati nell'espressione stringa di confronto per applicare la proiezione.

Sintassi:

collation_name COLLATE

Collation_name :: =

(Windows_collation_name) | (SQL_collation_name)

Parametro

collation_name

Viene usato nelle espressioni, la definizione della definizione di colonna o di confronto nome del database. collation_name possibile specificare solo Windows_collation_name o SQL_collation_name.

Windows_collation_name

regole di confronto Windows è il nome delle regole di confronto. Vedere il nome di regole di confronto di Windows.

SQL_collation_name

regole di confronto SQL è il nome delle regole di confronto. Vedere il nome di SQL regole di confronto.

Quindi, come possiamo conoscere il nome del confronto attuale è quello che, di fatto, il nome del confronto è che creiamo il database (esempio) è possibile scegliere il tempo, ma di solito ci impostare di default non originale, il suo cambiamento, quindi se il SQLServer cinese semplificato cinese semplificato userà le regole predefinite di ordinamento e, se il SQLServer è cinese tradizionale cinese semplificato useranno le regole di confronto predefinite. Guardiamo al database (istanza) della proprietà, nella scheda Generale della linea di fondo è che le regole di confronto in corso. In caso di default, il nome di confronto cinese semplificato è il seguente: Chinese_PRC_CI_AS e cinese tradizionale nome di confronto è: Chinese_Taiwan_Stroke_CI_AS, se abbiamo semplificato il nome di regole di confronto tradizionali caso di miscelazione, fino a quando una dichiarazione su ciò che si desidera utilizzare la corrente tipo di regole di ordinamento può essere paragonato, per esempio, che per la dichiarazione di cui sopra SQL, i seguenti due metodi per risolvere il problema che gli errori

SELECT Tabella1 .*, Table2 .*

DA Table1

INNER JOIN Tabella2 ON Table2.FK = Table1.PK COLLATE Chinese_PRC_CI_AS

SELECT Tabella1 .*, Table2 .*

DA Table1

INNER JOIN Tabella2 ON Table2.FK = Table1.PK COLLATE Chinese_Taiwan_Stroke_CI_AS

Che per un lungo tempo per risolvere i problemi causati dal conflitto the regole di confronto, se ci are interessati, a seguito della quale il SQL Server Books Online del concetto di ordinamento sono state of rules posted a parti with you, di save us and poi vai a:

Microsoft? SQL Server? 2000 supporta regole di confronto multiplo. le regole di ordinamento per controllare l'uso corretto del linguaggio (come il macedone o polacco) o alfabeto (come ad esempio le lingue dell'Europa occidentale usa il Latin1_General alfabeto latino) regole di codifica dei caratteri.

Ciascuna delle regole di confronto SQL Server indica tre proprietà:

Per i tipi di dati Unicode (nchar, nvarchar e ntext) nel tipo di ordinamento. Ordinamento definito sorta sequenza di caratteri, e le operazioni di confronto sui caratteri nel valore del metodo.

Per i tipi di carattere non Unicode dati (char, varchar e testo) del tipo di ordinamento.

Utilizzata per memorizzare dati di tipo carattere non Unicode di pagina di codice.

Guida non è possibile specificare i tipi di dati Unicode (nchar, nvarchar e ntext) la pagina codice corrispondente. Per i caratteri a doppio byte Unicode dallo standard Unicode definisce i modelli di punta e non possono essere cambiati.

Può essere specificato, a qualsiasi livello di confronto di SQL Server 2000. Installare SQL Server 2000, è possibile specificare le regole di confronto predefinite dell'istanza. Ogni volta che si crea il database, può essere assegnato alla regole di confronto predefinite del database. Se non si specificano le regole di confronto delle regole di confronto predefinite del database è l'esempio regole di confronto predefinite. Ogni volta che la definizione di colonna di caratteri, variabile o parametro è possibile specificare le regole di confronto di questi oggetti. Se il confronto non è specificato, utilizzerà le regole di confronto del database predefinito per creare questi oggetti.

Se l'istanza di SQL Server che tutti gli utenti utilizzano la stessa lingua, la lingua deve essere scelto di sostenere confronto. Ad esempio, se tutti gli utenti parlano francese, scegliere confronto francese.

Se l'utente di SQL Server lingue istanza devono essere scelti sulla necessità multilingue per fornire il miglior supporto per un raffronto. Ad esempio, se un utente in generale lingue dell'Europa occidentale, selezionare regole di confronto Latin1_General. Quando il supporto per l'utente multilingue, tutti i dati di carattere utilizzando tipi di dati Unicode nchar, nvarchar e ntext è molto importante. Unicode mira ad eliminare non Unicode char, varchar e testo tipo di dati difficoltà codice della pagina di conversione. Regole di confronto per il confronto perché la definizione dell'ordine di funzionamento e di ordinamento Unicode per i caratteri, così quando si utilizzano tipi di dati Unicode per ottenere tutte le colonne, l'ordinamento avrà regole diverse. Anche quando si utilizzano tipi di dati Unicode memorizzare dati di tipo carattere, la maggior parte degli utenti dovrebbe essere scelto di sostenere il confronto, per prevenire l'uso di non Unicode tipo di dati della colonna o una variabile di raggiungere.

Regole di confronto di SQL Server Motore di database per memorizzare e gestire la definizione di carattere e di dati Unicode. Tuttavia, quando i dati trasferiti nella domanda dopo l'applicazione per l'ordinamento e confronto dei caratteri selezionati dal computer di controllo delle impostazioni di Windows regionale. Le applicazioni utilizzano i caratteri nella raccolta di dati dal controllo un Windows Impostazioni internazionali del contesto regionale e definisce anche gli altri oggetti, come la digitale, ora, data e formato di valuta. Per Microsoft Windows NT? 4.0, Microsoft Windows? 98 e Microsoft Windows 95, utilizzare il pannello di controllo "Impostazioni applicazione specificata impostazioni di Windows regionale. Per Microsoft Windows 2000, utilizzare il "Pannello di controllo" in applicazione "Opzioni internazionali specificate locale. Le impostazioni di Windows regionale per ulteriori informazioni, visitare il sito Web Microsoft MSDN? Page International in via di sviluppo software per Windows 95 e Windows NT 4.0.

Numero di regole di confronto non Unicode dei dati è possibile utilizzare la stessa pagina di codice. Ad esempio, pagina di codice 1251 definisce il set di caratteri cirillici. Numero di ordinamento norme (come Cyrillic_General, ucraini e macedoni) utilizzare la pagina di codice. Anche se queste regole sono lo stesso tipo di bit per rappresentare i dati di tipo carattere non Unicode, ma quando si tratta di definizioni del dizionario, di cernita e applicare regole di confronto leggermente diversa, e definizioni del dizionario per determinare la lingua o le regole di ordinamento alfabeto associati i caratteri corretti sequenza.

Poiché SQL Server 2000 il controllo delle regole di confronto Unicode e di ordinamento non Unicode, in modo da non incontrare i dati non Unicode in Unicode e specificare regole di confronto diverse causato il problema. Nelle versioni precedenti di SQL Server sul numero di pagina di codice, di ordinamento e di confronto di caratteri Unicode specificati separatamente. Le versioni precedenti di SQL Server supporta anche un numero diverso per ogni codice di sorta per pagina, e per fornire il codice per le pagine non certo nelle impostazioni di Windows regionale l'ordinamento. In SQL Server 7.0, è possibile specificare anche la selezione dei dati per l'ordinamento non Unicode diverso il criterio di ordinamento Unicode. Ciò comporterà l'uso e dati non Unicode relativi dati Unicode, lo smistamento e le operazioni di confronto restituire risultati diversi.