Condividi tramite


Terminologia relativa alle regole di confronto

Per utilizzare in modo ottimale il supporto linguistico di SQL Server 2005, è necessario approfondire la conoscenza dei termini specificati in questo argomento.

Termini

  • Tabella codici
  • Regole di confronto
  • Tipo di dati
  • Globalizzazione
  • Impostazioni internazionali
  • Ordine di lettura
  • Tipo di ordinamento
  • Unicode

Tabella codici

Una tabella codici è un set ordinato di caratteri di uno script specifico nel quale a ogni carattere viene associato un indice numerico o un valore di punto di codice. Le tabelle codici di Microsoft Windows vengono in genere indicate come set di caratteri o charset. Queste tabelle vengono utilizzate per supportare i set di caratteri e i layout di tastiera usati per le diverse impostazioni internazionali di Windows.

Argomenti correlati:Impostazione delle tabelle codici client

Torna all'inizio

Regole di confronto

Le regole di confronto specificano gli schemi di bit che rappresentano i caratteri in un set di dati. Le regole di confronto inoltre determinano le regole in base alle quali vengono ordinati e confrontati i dati. SQL Server 2005 supporta l'archiviazione di oggetti con diverse regole di confronto in un singolo database, pertanto ogni colonna di un database di SQL Server può includere regole di confronto specifiche. Per le colonne non Unicode, l'impostazione delle regole di confronto specifica la tabella codici dei dati e di conseguenza i caratteri che possono essere rappresentati. I dati tra le colonne Unicode possono essere spostati senza alcun processo di conversione. Viceversa, lo spostamento di dati tra le colonne non Unicode richiede la conversione preliminare tramite la tabella codici corrente.

Il risultato di un'istruzione Transact-SQL può variare quando l'istruzione viene eseguita in un contesto di database differenti, laddove ogni database presenta un'impostazione diversa delle regole di confronto. Le procedure consigliate prevedono, se possibile, l'utilizzo di regole di confronto standard per l'organizzazione. L'impostazione di regole di confronto standard in tutti i sistemi dell'organizzazione consentirà di eliminare la necessità di specificare in modo esplicito le regole di confronto per ogni carattere o espressione Unicode. Se occorre utilizzare oggetti con impostazioni diverse per tabelle codici e regole di confronto, sarà necessario codificare le query in modo da considerare la precedenza delle regole di confronto. Per ulteriori informazioni, vedere Precedenza regole di confronto (Transact-SQL).

Le regole di confronto includono le caratteristiche di distinzione della lingua, distinzione tra maiuscole e minuscole, distinzione tra caratteri accentati e non accentati, distinzione Kana e distinzione della larghezza.

Le regole di confronto di SQL Server 2005 includono i raggruppamenti seguenti:

  • Regole di confronto di Windows
    Le regole di confronto di Windows definiscono le regole per l'archiviazione dei dati di tipo carattere in base a un'impostazione internazionale di Windows associata. Per le regole di confronto di Windows, il confronto dei dati non Unicode è implementato mediante lo stesso algoritmo dei dati Unicode. Le regole di confronto di Windows di base specificano quale alfabeto o lingua utilizzare quando viene applicato l'ordinamento del dizionario oltre alla tabella codici utilizzata per l'archiviazione di dati di tipo carattere non Unicode. Sia l'ordinamento Unicode che quello non Unicode sono compatibili con i confronti di stringhe di una versione specifica di Windows. In questo modo, oltre a essere garantita la consistenza tra i tipi di dati di SQL Server, viene consentito agli sviluppatori di ordinare le stringhe nelle applicazioni mediante le stesse regole utilizzate in SQL Server, ovvero mediante la chiamata della funzione CompareStringW dell'API Microsoft Win32. Per ulteriori informazioni, vedere Impostazioni delle regole di confronto durante l'installazione.
  • Regole di confronto binarie
    Le regole di confronto binarie ordinano i dati in base alla sequenza dei valori codificati definiti mediante il tipo di dati e le impostazioni internazionali. Le regole di confronto binarie di SQL Server definiscono le impostazioni internazionali per la lingua nonché la tabella codici ANSI da utilizzare, applicando così un tipo di ordinamento binario. Grazie alla loro relativa semplicità, le regole di confronto binarie consentono di migliorare le prestazioni delle applicazioni. Per i tipi di dati non Unicode, i confronti sono basati sui punti di codice definiti nella tabella codici ANSI. Per i tipi di dati Unicode, i confronti sono basati sui punti di codice Unicode. Per le regole di confronto binarie nei tipi di dati Unicode, le impostazioni internazionali non vengono considerate ai fini dell'ordinamento dei dati. Ad esempio, se si utilizzano prima le impostazioni Latin_1_General_BIN e poi quelle Japanese_BIN su dati Unicode, verranno restituiti risultati di ordinamento identici.

    Le precedenti regole di confronto binarie di SQL Server eseguono confronti basati su punti di codice incompleti per i dati Unicode, in quanto nelle precedenti versioni di SQL Server viene confrontato il primo carattere come WCHAR e quindi si procede al confronto di ogni singolo byte. Per motivi di compatibilità con le versioni precedenti, la semantica delle regole di confronto binarie esistente non verrà modificata.

    Le regole di confronto binarie nella versione attuale di SQL Server includono un nuovo set di regole per il confronto di punti di codice completo. I clienti possono scegliere se eseguire la migrazione alle nuove regole di confronto binarie per sfruttare i vantaggi offerti dai confronti di punti di codice completi. Si consiglia di utilizzare le nuove regole di confronto binarie per lo sviluppo di nuove applicazioni. Il nuovo suffisso BIN2 identifica i nomi delle regole di confronto che implementano la nuova semantica delle regole di confronto dei punti di codice. Inoltre, per il nuovo ordinamento binario viene aggiunto un nuovo flag di confronto corrispondente a BIN2. Per ulteriori informazioni, vedere Utilizzo di regole di confronto binarie.

  • Regole di confronto di SQL Server
    Le regole di confronto di SQL Server garantiscono la compatibilità dei tipi di ordinamento con le versioni precedenti di SQL Server. Le regole di confronto di SQL Server sono basate su tipi di ordinamento di SQL Server legacy per i dati non Unicode, ad esempio i tipi di dati char e varchar definiti da SQL Server. Le regole di ordinamento del dizionario per i dati non Unicode non sono compatibili con alcuna routine di ordinamento disponibile nei sistemi operativi Windows, tuttavia l'ordinamento dei dati Unicode è compatibile con una versione specifica di regole di ordinamento di Windows. Poiché le regole di confronto di SQL Server sono diverse per i dati non Unicode e i dati Unicode, è possibile ottenere risultati differenti dal confronto di dati uguali, a seconda del tipo di dati sottostante. Per ulteriori informazioni, vedere Utilizzo delle regole di confronto SQL.

    [!NOTA] Quando si aggiorna un'istanza di SQL Server, è possibile specificare le regole di confronto di SQL Server per assicurare la compatibilità con le istanze esistenti di SQL Server. Poiché le regole di confronto predefinite di un'istanza di SQL Server vengono definite durante l'installazione, è importante specificare attentamente le impostazioni delle regole di confronto quando:

    • Il codice dell'applicazione dipende da caratteristiche delle regole di confronto di versioni precedenti di SQL Server.
    • Con installazioni esistenti di SQL Server 6.5 o SQL Server 7.0 viene utilizzata la replica di SQL Server 2005.
    • È necessario archiviare dati di tipo carattere in più lingue.

SQL Server 2005 supporta l'impostazione di regole di confronto per i seguenti livelli di un'istanza di SQL Server 2005:

  • Regole di confronto a livello di server
    Le regole di confronto predefinite di un'istanza di SQL Server vengono impostate durante l'installazione. Le regole di confronto predefinite dell'istanza diventano inoltre le regole di confronto predefinite dei database di sistema seguenti: master, model, tempdb, msdb e distribution. Dopo l'assegnazione delle regole di confronto a un oggetto, ad eccezione delle colonne e dei database, non è possibile modificare le regole di confronto se non eliminando e creando di nuovo l'oggetto. Anziché modificare le regole di confronto predefinite di un'istanza di SQL Server, è possibile specificare le regole di confronto al momento della creazione di nuovi database e colonne di database.

    Per eseguire una query sulle regole di confronto del server per un'istanza di SQL Server, utilizzare la funzione Transact-SQL SERVERPROPERTY seguente:

    SELECT CONVERT (varchar, SERVERPROPERTY('collation'))
    

    Per eseguire una query sul server per tutte le regole di confronto disponibili, utilizzare la funzione predefinita fn_helpcollations() seguente:

    SELECT * from ::fn_helpcollations()
    
  • Regole di confronto a livello di database
    Quando si crea un database, è possibile utilizzare la clausola COLLATE dell'istruzione CREATE DATABASE per specificare le regole di confronto predefinite del database. Se non vengono specificate regole di confronto durante la creazione del database, verranno assegnate le regole di confronto predefinite del database model. Le regole di confronto predefinite per il database model sono le stesse regole di confronto predefinite dell'istanza di SQL Server.

    È possibile modificare le regole di confronto di un database utente con un'istruzione ALTER DATABASE come quella indicata di seguito:

    ALTER DATABASE myDB COLLATE Greek_CS_AI
    

    È possibile recuperare le regole di confronto correnti di un database utilizzando un'istruzione come quella indicata di seguito:

    SELECT CONVERT (varchar, DATABASEPROPERTYEX('database_name','collation'))
    

    [!NOTA] Le modifiche apportate alle regole di confronto a livello di database non interessano le regole di confronto a livello di colonna, tabella o utente.

  • Regole di confronto a livello di colonna
    Quando si crea una tabella, è possibile specificare le regole di confronto per ogni colonna di stringhe di caratteri utilizzando la clausola COLLATE dell'istruzione CREATE TABLE. Se non vengono specificate regole di confronto durante la creazione della tabella, alla colonna verranno assegnate le regole di confronto predefinite del database.

    È possibile modificare le regole di confronto di una colonna con un'istruzione ALTER TABLE come quella indicata di seguito:

    ALTER TABLE myTable ALTER COLUMN mycol NVARCHAR(10) COLLATE Greek_CS_AI
    
  • Regole di confronto a livello di espressione
    Le regole di confronto a livello di espressione vengono impostate al momento dell'esecuzione di un'istruzione e interessano la modalità di restituzione di un set di risultati. Ciò consente di ordinare i risultati in modo che la clausola ORDER BY possa essere specifica della lingua. Per implementare le regole di confronto a livello di espressione, utilizzare una clausola COLLATE come quella indicata di seguito:

    SELECT name FROM customer ORDER BY name COLLATE Latin1_General_CS_AI
    

Torna all'inizio

Tipo di dati

Il tipo di dati è una definizione che specifica un intervallo di valori, le operazioni che possono essere eseguite sui valori e la modalità di archiviazione dei valori nella memoria del computer. In SQL Server la definizione dei tipi di dati consente di modificare i dati in base a modalità prevedibili. I tipi di dati carattere non Unicode sono char, varchar e text. I tipi di dati Unicode, che utilizzano la rappresentazione dei caratteri Unicode, sono nchar, nvarchar e ntext. È consigliabile utilizzare tipi di dati Unicode nelle applicazioni, specialmente se si archiviano dati di tipo carattere che riflettono più lingue.

Argomenti correlati:Tipi di dati (Motore di database), Tipi di dati (Transact-SQL), Tipi di dati di Integration Services

Torna all'inizio

Globalizzazione

La globalizzazione rappresenta il processo di sviluppo di un'applicazione software che prevede la progettazione di funzionalità e codice in base a più lingue parlate e impostazioni internazionali. La progettazione di un'applicazione globalizzata include più impostazioni internazionali e lingue supportate da Unicode per l'input, l'elaborazione, la visualizzazione e l'output dei dati.

Argomenti correlati:Considerazioni sulle funzionalità internazionali di SQL Server

Torna all'inizio

Impostazioni internazionali

Le impostazioni internazionali rappresentano il set di informazioni associate a un paese o a una lingua, ad esempio il nome e l'identificatore della lingua parlata, lo script utilizzato per la scrittura della lingua e le convenzioni culturali. SQL Server 2005 include tutte le 135 impostazioni internazionali supportate da Windows XP, tra cui cinque impostazioni internazionali per la lingua cinese (Hong Kong RAS, Macao RAS, Repubblica popolare cinese, Singapore e Taiwan), tredici impostazioni internazionali per la lingua inglese (Australia, Belize, Canada, Caraibi, Irlanda, Giamaica, Nuova Zelanda, Filippine, Sud Africa, Trinidad, Regno Unito, Stati Uniti e Zimbabwe) e sei impostazioni internazionali per la lingua francese (Belgio, Canada, Francia, Lussemburgo, Monaco e Svizzera).

Nella tabella seguente vengono illustrate alcune differenze tra quattro impostazioni internazionali comuni supportate da Windows.

Impostazioni internazionali Inglese (Stati Uniti) Francese (Francia) Giapponese Emirati Arabi Uniti

Paese

Stati Uniti

Francia

Giappone

Emirati Arabi Uniti

Lingua

Inglese

Francese

Giapponese

Arabo

Script scritti

Latino

Latino

Kana, Kanji

Arabo

Ordine di lettura

Da sinistra a destra

Da sinistra a destra

Da sinistra a destra

Da destra a sinistra

Tabella codici definita da Windows

1252

1252

932

1256

Formato ora

1:00 pm

13:00

13:00

1:00 p

Calendario

Gregoriano

Gregoriano

Gregoriano (localizzato)

Gregoriano (localizzato)

Formato carta predefinito

Lettera USA

A4

A4

A4

Separatore decimale

.

,

.

,

Separatore di elenco

,

;

,

;

Separatore delle migliaia

,

spazio

,

,

Torna all'inizio

Ordine di lettura

L'ordine di lettura rappresenta la direzione generale di una sequenza di testo ordinata, definita in relazione all'ordine delle parole e non dei caratteri immessi. Se ad esempio si utilizza l'arabo come lingua della tastiera, i nuovi caratteri scorreranno sempre da destra a sinistra. Se invece la lingua della tastiera è il latino, i nuovi caratteri scorreranno da sinistra a destra.

Torna all'inizio

Tipo di ordinamento

Il tipo di ordinamento specifica il modo in cui vengono ordinati i valori dei dati e incide sui risultati del confronto dei dati stessi. L'ordinamento dei dati viene eseguito tramite le regole di confronto e può essere ottimizzato mediante l'utilizzo degli indici.

Argomenti correlati:Stili di ordinamento delle regole di confronto di Windows, Indici

Torna all'inizio

Unicode

Unicode è un sistema che codifica i caratteri di una lingua in due byte anziché in uno. In tal modo è possibile rappresentare la maggior parte delle lingue scritte del mondo utilizzando un singolo set di caratteri Unicode. Unicode è stato sviluppato, gestito e promosso da Unicode Consortium, un'organizzazione del settore informatico senza fini di lucro. Per ulteriori informazioni, visitare il sito Web di Unicode Consortium.

Se si archiviano dati di tipo carattere che riflettono più lingue, utilizzare sempre tipi di dati Unicode (nchar, nvarchar e ntext) anziché tipi di dati non Unicode (char, varchar e text). L'utilizzo di tipi di dati Unicode può comportare un miglioramento significativo delle prestazioni in quanto verrà richiesto un numero inferiore di conversioni di tabelle codici. Ai tipi di dati non Unicode sono invece associate numerose limitazioni, in quanto nei computer non Unicode sarà disponibile una sola tabella codici. Per valutare in modo completo i problemi relativi all'utilizzo di tipi di dati Unicode o non Unicode, è necessario testare lo scenario per verificare le differenze di prestazioni in un ambiente specifico. Sarà quanto meno necessario standardizzare le regole di confronto del sito e distribuire client e server Unicode, se possibile.

Nella maggior parte dei casi, l'istanza di SQL Server interagirà con altri server o client e potrà utilizzare più standard di accesso ai dati. Di seguito sono riportati i due tipi principali di client di SQL Server:

  • Client Unicode che utilizzano OLE DB e ODBC (Open Database Connectivity) 3.7 o versioni successive.
  • Client non Unicode che utilizzano DB-Library e ODBC 3.6 o versioni precedenti.

Nella tabella seguente viene valutato l'utilizzo di dati multilingue con diverse combinazioni di server Unicode e non Unicode.

Server Client Vantaggi o limitazioni

Unicode

Unicode

Si tratta di una configurazione ideale in quanto i dati Unicode verranno utilizzati nell'intero sistema. Questo scenario, oltre ad assicurare prestazioni ottimali, garantisce la protezione contro eventuali danneggiamenti di dati recuperati. Questa configurazione utilizza Microsoft ADO (ActiveX Data Objects), OLE DB e ODBC 3.7 o versioni successive.

Unicode

Non Unicode

In questo scenario, l'archiviazione dei dati potrebbe non rappresentare un problema, ma potrebbero presentarsi limitazioni relative allo spostamento dei dati nei computer client. Sarà quanto meno necessario convertire i dati Unicode mediante la tabella codici del client non Unicode.

Non Unicode

Unicode

Non si tratta di una configurazione ideale per l'utilizzo di dati multilingue. Non sarà possibile scrivere dati Unicode nel server non Unicode e potrebbero verificarsi problemi all'invio dei dati ai server che non rientrano nella tabella codici del server.

Non Unicode

Non Unicode

Si tratta di uno scenario che presenta numerose limitazioni per i dati multilingue in quanto sarà possibile utilizzare una sola tabella codici. La configurazione ideale è rappresentata da un server Unicode con client Unicode.

Argomenti correlati:Nozioni fondamentali su Unicode.

Torna all'inizio

Vedere anche

Riferimento

Opzioni delle regole di confronto e supporto internazionale

Guida in linea e informazioni

Assistenza su SQL Server 2005