Regole di confronto e supporto UnicodeCollation and Unicode Support

Le regole di confronto di SQL ServerSQL Server forniscono regole di ordinamento e proprietà di distinzione tra maiuscole e minuscole e tra caratteri accentati e non accentati per i dati.Collations in SQL ServerSQL Server provide sorting rules, case, and accent sensitivity properties for your data. Le regole di confronto usate con dati di tipo carattere, quali char e varchar , definiscono la tabella codici e i caratteri corrispondenti che possono essere rappresentati per quel tipo di dati.Collations that are used with character data types such as char and varchar dictate the code page and corresponding characters that can be represented for that data type. Sia che si installi una nuova istanza di SQL ServerSQL Server, si ripristini il backup di un database o si stabiliscano connessioni tra database server e client, è importante comprendere i requisiti delle impostazioni locali, l'ordinamento e la modalità di distinzione tra maiuscole e minuscole e tra caratteri accentati e non accentati dei dati da usare.Whether you are installing a new instance of SQL ServerSQL Server, restoring a database backup, or connecting server to client databases, it is important that you understand the locale requirements, sorting order, and case and accent sensitivity of the data that you will be working with. Per visualizzare l'elenco delle regole di confronto disponibili nell'istanza di SQL ServerSQL Server, vedere sys.fn_helpcollations (Transact-SQL).To list the collations available on your instance of SQL ServerSQL Server, see sys.fn_helpcollations (Transact-SQL).

Selezionando le regole di confronto per un server, un database, una colonna o un'espressione, vengono assegnate determinate caratteristiche ai dati che influiranno sui risultati di molte operazioni eseguite nel database.When you select a collation for your server, database, column, or expression, you are assigning certain characteristics to your data that will affect the results of many operations in the database. Ad esempio, quando viene costruita una query tramite ORDER BY, l'ordinamento del set di risultati può dipendere dalle regole di confronto applicate al database o specificate in una clausola COLLATE al livello di espressione della query.For example, when you construct a query by using ORDER BY, the sort order of your result set might depend on the collation that is applied to the database or dictated in a COLLATE clause at the expression level of the query.

Per usare in modo ottimale il supporto delle regole di confronto di SQL ServerSQL Server, è necessario approfondire la conoscenza dei termini specificati in questo argomento e delle relative relazioni con le caratteristiche dei dati.To best use collation support in SQL ServerSQL Server, you must understand the terms that are defined in this topic, and how they relate to the characteristics of your data.

Termini delle regole di confronto Collation Terms

Confronto Collation

Le regole di confronto specificano i modelli di bit che rappresentano i caratteri in un set di dati.A collation specifies the bit patterns that represent each character in a data set. Le regole di confronto determinano inoltre le regole in base alle quali i dati vengono ordinati e confrontati.Collations also determine the rules that sort and compare data. SQL ServerSQL Server supporta l'archiviazione di oggetti con regole di confronto diverse in un singolo database. supports storing objects that have different collations in a single database. Per le colonne non Unicode, l'impostazione delle regole di confronto specifica la tabella codici dei dati e i caratteri che possono essere rappresentati.For non-Unicode columns, the collation setting specifies the code page for the data and which characters can be represented. Per i dati spostati tra colonne non Unicode, è necessaria la conversione dalla tabella codici di origine a quella di destinazione.Data that is moved between non-Unicode columns must be converted from the source code page to the destination code page.

I risultati di un'istruzione Transact-SQLTransact-SQL possono variare se l'istruzione viene eseguita nel contesto di database diversi che utilizzano impostazioni diverse per le regole di confronto. Transact-SQLTransact-SQL statement results can vary when the statement is run in the context of different databases that have different collation settings. Se possibile, usare regole di confronto standardizzate per l'organizzazione.If it is possible, use a standardized collation for your organization. In questo modo, non è necessario specificare esplicitamente le regole di confronto in ogni carattere o espressione Unicode.This way, you do not have to explicitly specify the collation in every character or Unicode expression. Se è necessario usare oggetti con impostazioni diverse per tabelle codici e regole di confronto, codificare le query in modo da considerare la precedenza delle regole di confronto.If you must work with objects that have different collation and code page settings, code your queries to consider the rules of collation precedence. Per altre informazioni, vedere Precedenza delle regole di confronto (Transact-SQL).For more information, see Collation Precedence (Transact-SQL).

Alle regole di confronto sono associate le opzioni seguenti: distinzione tra maiuscole e minuscole, distinzione tra caratteri accentati e non accentati, distinzione dei caratteri Kana, distinzione di larghezza e distinzione dei selettori di variazione.The options associated with a collation are case sensitivity, accent sensitivity, Kana-sensitivity, width sensitivity, variation-selector-sensitivity. Tali opzioni vengono specificate aggiungendole al nome delle regole di confronto.These options are specified by appending them to the collation name. Ad esempio, le regole di confronto Japanese_Bushu_Kakusu_100_CS_AS_KS_WS prevedono: distinzione tra maiuscole e minuscole, distinzione tra caratteri accentati e non accentati, distinzione Kana e distinzione di larghezza.For example, this collation Japanese_Bushu_Kakusu_100_CS_AS_KS_WS is case-sensitive, accent-sensitive, Kana-sensitive, and width-sensitive. Sempre a titolo di esempio, le regole di confronto Japanese_Bushu_Kakusu_140_CI_AI_KS_WS_VSS prevedono le opzioni seguenti: nessuna distinzione tra lettere maiuscole e minuscole, nessuna distinzione tra caratteri accentati e non accentati, distinzione dei caratteri Kana, distinzione di larghezza e distinzione dei selettori di variazione.As another example, this collation Japanese_Bushu_Kakusu_140_CI_AI_KS_WS_VSS is case-insensitive, accent-insensitive, Kana-sensitive, width-sensitive, and variation-selector-sensitive. La tabella seguente descrive il comportamento associato a queste opzioni.The following table describes the behavior associated with these various options.

OpzioneOption DescrizioneDescription
Distinzione maiuscole/minuscole (_CS)Case-sensitive (_CS) Opera una distinzione tra lettere maiuscole e minuscole.Distinguishes between uppercase and lowercase letters. Se viene selezionata questa opzione, le lettere minuscole precedono le versioni maiuscole corrispondenti nell'ordinamento.If selected, lowercase letters sort ahead of their uppercase versions. Se questa opzione non viene selezionata, le regole di confronto non effettueranno distinzione tra maiuscole e minuscole.If this option is not selected, the collation will be case-insensitive. Ovvero, in SQL Server non viene operata una distinzione tra lettere maiuscole e minuscole, che vengono considerate identiche ai fini dell'ordinamento.That is, SQL Server considers the uppercase and lowercase versions of letters to be identical for sorting purposes. È possibile selezionare in modo esplicito l'esclusione della distinzione tra maiuscole e minuscole specificando _CI.You can explicitly select case insensitivity by specifying _CI.
Distinzione caratteri accentati/non accentati (_AS)Accent-sensitive (_AS) Opera una distinzione tra caratteri accentati e non accentati.Distinguishes between accented and unaccented characters. Il carattere 'a', ad esempio, non viene considerato uguale ad 'ấ'.For example, 'a' is not equal to 'ấ'. Se questa opzione non viene selezionata, le regole di confronto non effettueranno distinzione tra caratteri accentati e non accentati.If this option is not selected, the collation will be accent-insensitive. Ovvero, in SQL Server non viene opera una distinzione tra caratteri accentati e non accentati, che vengono considerati identici ai fini dell'ordinamento.That is, SQL Server considers the accented and unaccented versions of letters to be identical for sorting purposes. È possibile selezionare in modo esplicito l'esclusione della distinzione tra caratteri accentati e non accentati specificando _AI.You can explicitly select accent insensitivity by specifying _AI.
Distinzione Kana (_KS)Kana-sensitive (_KS) Opera una distinzione tra i due tipi di caratteri Kana giapponesi: Hiragana e Katakana.Distinguishes between the two types of Japanese kana characters: Hiragana and Katakana. Se questa opzione non viene selezionata, le regole di confronto non effettuano distinzione tra caratteri Kana.If this option is not selected, the collation is Kana-insensitive. Ovvero, in SQL Server i caratteri Hiragana e Katakana vengono considerati identici ai fini dell'ordinamento.That is, SQL Server considers Hiragana and Katakana characters to be equal for sorting purposes. Omettere questa opzione è il solo metodo per specificare di non effettuare la distinzione Kana.Omitting this option is the only method of specifying Kana-insensitivity.
Distinzione larghezza (_WS)Width-sensitive (_WS) Opera una distinzione tra caratteri a larghezza intera e caratteri a metà larghezza.Distinguishes between full-width and half-width characters. Se questa opzione non viene selezionata, SQL Server considera identiche le rappresentazioni con caratteri a larghezza intera e a metà larghezza dello stesso carattere ai fini dell'ordinamento.If this option is not selected, SQL Server considers the full-width and half-width representation of the same character to be identical for sorting purposes. Omettere questa opzione è il solo metodo per specificare di non effettuare la distinzione larghezza.Omitting this option is the only method of specifying width-insensitivity.
Distinzione dei selettori di variazione (_VSS)Variation-selector-sensitive (_VSS) Opera una distinzione tra vari selettori di variazione di simboli ideografici nelle regole di confronto giapponesi Japanese_Bushu_Kakusu_140 e Japanese_XJIS_140 introdotte inizialmente in SQL Server 2017SQL Server 2017.Distinguishes between various ideographic variation selectors in Japanese collations Japanese_Bushu_Kakusu_140 and Japanese_XJIS_140 first introduced in SQL Server 2017SQL Server 2017. Una sequenza di variazione è costituita da un carattere di base e da un selettore di variazione aggiuntivo.A variation sequence consists of a base character plus an additional variation selector. Se questa opzione _VSS non è selezionata, le regole di confronto non fanno distinzione tra selettori di variazione e il selettore di variazione non viene considerato nel confronto.If this _VSS option is not selected, the collation is variation selector insensitive, and the variation selector is not considered in the comparison. In altri termini, SQL Server considera identici, ai fini dell'ordinamento, i caratteri basati sullo stesso carattere con diversi selettori di variazione.That is, SQL Server considers characters built upon the same base character with differing variation selectors to be identical for sorting purposes. Vedere anche Unicode Ideographic Variation Database(Database di variazioni di simboli ideografici Unicode).See also Unicode Ideographic Variation Database.

Le regole di confronto con distinzione tra selettori di variazione (_VSS) non sono supportate negli indici di ricerca full-text.Variation selector sensitive (_VSS) collations are not supported in Full-text search indexes. Questi indici supportano solo le opzioni Distinzione caratteri accentati/non accentati (_AS), Distinzione Kana (_KS) e Distinzione larghezza (_WS).Full-text search indexes support only Accent-Sensitive (_AS), Kana-sensitive (_KS), and Width-sensitive (_WS) options. I motori di CLR e XML in SQL Server non supportano i selettori di variazione (_VSS).SQL Server XML and CLR engines do not support (_VSS) Variation selectors.

In SQL ServerSQL Server sono supportati i seguenti set di regole di confronto: SQL ServerSQL Server supports the following collation sets:

Regole di confronto di WindowsWindows collations
Le regole di confronto di Windows definiscono regole per l'archiviazione dei dati di tipo carattere basate sulle impostazioni locali del sistema Windows associate.Windows collations define rules for storing character data that are based on an associated Windows system locale. Per le regole di confronto di Windows, il confronto dei dati non Unicode è implementato mediante lo stesso algoritmo dei dati Unicode.For a Windows collation, comparison of non-Unicode data is implemented by using the same algorithm as Unicode data. Le regole di confronto di base di Windows specificano l'alfabeto o la lingua da usare quando viene applicato l'ordinamento del dizionario, nonché la tabella codici usata per l'archiviazione di dati di tipo carattere non Unicode.The base Windows collation rules specify which alphabet or language is used when dictionary sorting is applied, and the code page that is used to store non-Unicode character data. Sia l'ordinamento Unicode che quello non Unicode sono compatibili con i confronti di stringhe di una versione specifica di Windows.Both Unicode and non-Unicode sorting are compatible with string comparisons in a particular version of Windows. In questo modo viene garantita la consistenza tra i tipi di dati in SQL ServerSQL Server e gli sviluppatori possono ordinare le stringhe all'interno delle applicazioni mediante le stesse regole usate da SQL ServerSQL Server.This provides consistency across data types within SQL ServerSQL Server, and it also lets developers sort strings in their applications by using the same rules that are used by SQL ServerSQL Server. Per altre informazioni, vedere Windows_collation_name (Transact-SQL).For more information, see Windows Collation Name (Transact-SQL).

Regole di confronto binarieBinary collations
Le regole di confronto binarie ordinano i dati in base alla sequenza di valori codificati definiti dalle impostazioni locali e dal tipo di dati.Binary collations sort data based on the sequence of coded values that are defined by the locale and data type. Per tali regole è prevista la distinzione tra maiuscole e minuscole.They are case sensitive. In SQL ServerSQL Server le regole di confronto binarie definiscono le impostazioni locali e la tabella codici ANSI che verranno usate.A binary collation in SQL ServerSQL Server defines the locale and the ANSI code page that will be used. In questo modo viene applicato un ordinamento binario.This enforces a binary sort order. Grazie alla loro semplicità, le regole di confronto binarie consentono di migliorare le prestazioni dell'applicazione.Because they are relatively simple, binary collations help improve application performance. Per i tipi di dati non Unicode, il confronto dei dati è basato sui punti di codice definiti nella tabella codici ANSI.For non-Unicode data types, data comparisons are based on the code points that are defined in the ANSI code page. Per i tipi di dati Unicode, il confronto dei dati è basato sui punti di codice Unicode.For Unicode data types, data comparisons are based on the Unicode code points. Per le regole di confronto binarie nei tipi di dati Unicode, le impostazioni locali non vengono considerate ai fini dell'ordinamento dei dati.For binary collations on Unicode data types, the locale is not considered in data sorts. Ad esempio, l'utilizzo di Latin_1_General_BIN e Japanese_BIN su dati Unicode restituisce risultati di ordinamento identici.For example, Latin_1_General_BIN and Japanese_BIN yield identical sorting results when they are used on Unicode data.

Esistono due tipi di regole di confronto binarie in SQL ServerSQL Server: le regole di confronto BIN meno recenti e quelle più recenti BIN2 .There are two types of binary collations in SQL ServerSQL Server; the older BIN collations and the newer BIN2 collations. Nelle regole di confronto BIN2 tutti i caratteri vengono ordinati in base ai relativi punti di codice.In a BIN2 collation all characters are sorted according to their code points. Nelle regole di confronto BIN solo il primo carattere viene ordinato in base al punto di codice e i restanti caratteri vengono ordinati in base ai relativi valori di byte.In a BIN collation only the first character is sorted according to the code point, and remaining characters are sorted according to their byte values. Poiché la piattaforma Intel si avvale di un'architettura little endian, i caratteri di codice Unicode vengono sempre scambiati con i byte archiviati.(Because the Intel platform is a little endian architecture, Unicode code characters are always stored byte-swapped.)

regole di confronto di SQL ServerSQL Server collations
Le regole di confronto SQL ServerSQL Server (SQL_) garantiscono la compatibilità di ordinamento con le versioni precedenti di SQL ServerSQL Server. SQL ServerSQL Server collations (SQL_) provide sort order compatibility with earlier versions of SQL ServerSQL Server. Le regole di ordinamento del dizionario per i dati non Unicode sono compatibili con qualsiasi routine di ordinamento fornita dai sistemi operativi Windows.The dictionary sorting rules for non-Unicode data are incompatible with any sorting routine that is provided by Windows operating systems. Tuttavia l'ordinamento dei dati Unicode è compatibile con una versione specifica di regole di ordinamento di Windows.However, sorting Unicode data is compatible with a particular version of Windows sorting rules. Poiché le regole di confronto di SQL ServerSQL Server differiscono per i dati non Unicode e i dati Unicode, confrontando gli stessi dati verranno visualizzati risultati diversi, a seconda del tipo di dati sottostante.Because SQL ServerSQL Server collations use different comparison rules for non-Unicode and Unicode data, you will see different results for comparisons of the same data, depending on the underlying data type. Per altre informazioni, vedere Nome delle regole di confronto di SQL Server (Transact-SQL).For more information, see SQL Server Collation Name (Transact-SQL).

Nota

Quando si aggiorna un'istanza in lingua inglese di SQL ServerSQL Server, è possibile specificare le regole di confronto di SQL ServerSQL Server (SQL_) per assicurare la compatibilità con le istanze esistenti di SQL ServerSQL Server.When you upgrade an English-language instance of SQL ServerSQL Server, SQL ServerSQL Server collations (SQL_) can be specified for compatibility with existing instances of SQL ServerSQL Server. Poiché le regole di confronto predefinite per un'istanza di SQL ServerSQL Server vengono definite durante la configurazione, è importante specificare attentamente le impostazioni delle regole di confronto quando le condizioni riportate di seguito sono vere:Because the default collation for an instance of SQL ServerSQL Server is defined during setup, make sure that you specify collation settings carefully when the following are true:

  • Il codice dell'applicazione dipende dal comportamento di regole di confronto di SQL ServerSQL Server precedenti.Your application code depends on the behavior of previous SQL ServerSQL Server collations.
    • È necessario archiviare dati di tipo carattere in più lingue.You must store character data that reflects multiple languages.

L'impostazione delle regole di confronto è supportata ai seguenti livelli di un'istanza di SQL ServerSQL Server:Setting collations are supported at the following levels of an instance of SQL ServerSQL Server:

Regole di confronto a livello di serverServer-level collations
Le regole di confronto predefinite del server vengono impostate durante l'installazione di SQL ServerSQL Server e diventano le regole predefinite anche per i database di sistema e per tutti i database utente.The default server collation is set during SQL ServerSQL Server setup, and also becomes the default collation of the system databases and all user databases. Si noti che non è possibile selezionare le regole di confronto solo Unicode durante l'installazione di SQL ServerSQL Server , perché non sono supportate come regole di confronto a livello server.Note that Unicode-only collations cannot be selected during SQL ServerSQL Server setup because they are not supported as server-level collations.

Una volta che le regole di confronto sono state assegnate al server, non è possibile modificarle se non esportando tutti i dati e gli oggetti di database, ricostruendo il database master e importando tutti i dati e gli oggetti di database.After a collation has been assigned to the server, you cannot change the collation except by exporting all database objects and data, rebuilding the master database, and importing all database objects and data. Anziché modificare le regole di confronto predefinite di un'istanza di SQL ServerSQL Server, è possibile specificare quelle desiderate al momento della creazione di nuovi database o colonne di database.Instead of changing the default collation of an instance of SQL ServerSQL Server, you can specify the desired collation at the time that you create a new database or database column.

Regole di confronto a livello di databaseDatabase-level collations
Quando viene creato o modificato un database, è possibile usare la clausola COLLATE dell'istruzione CREATE DATABASE o ALTER DATABASE per specificare regole di confronto predefinite del database.When a database is created or modified, you can use the COLLATE clause of the CREATE DATABASE or ALTER DATABASE statement to specify the default database collation. Se non viene specificata alcuna regola di confronto, al database vengono assegnate le regole di confronto del server.If no collation is specified, the database is assigned the server collation.

Non è possibile modificare le regole di confronto del database di sistema se non modificandole per il server.You cannot change the collation of system databases except by changing the collation for the server.

Le regole di confronto del database vengono usate per tutti i metadati nel database e rappresentano l'impostazione predefinita per tutte le colonne stringa, gli oggetti temporanei, i nomi di variabili e qualsiasi altra stringa usata nel database.The database collation is used for all metadata in the database, and is the default for all string columns, temporary objects, variable names, and any other strings used in the database. Quando le regole di confronto di un database utente vengono modificate, è possibile che si verifichino conflitti tra le regole di confronto quando vengono eseguite query nelle tabelle temporanee di accesso al database.When you change the collation of a user database, there can be collation conflicts when queries in the database access temporary tables. Le tabelle temporanee sono sempre archiviate nel database di sistema tempdb , che utilizzerà le regole di confronto per l'istanza.Temporary tables are always stored in the tempdb system database, which will use the collation for the instance. L'esecuzione di query di confronto dei dati di tipo carattere tra database utente e tempdb può non riuscire se le regole di confronto causano un conflitto nella valutazione dei dati di tipo carattere.Queries that compare character data between the user database and tempdb may fail if the collations cause a conflict in evaluating the character data. È possibile risolvere il problema specificando la clausola COLLATE nella query.You can resolve this by specifying the COLLATE clause in the query. Per altre informazioni, vedere COLLATE (Transact-SQL).For more information, see COLLATE (Transact-SQL).

Regole di confronto a livello di colonnaColumn-level collations
Quando una tabella viene creata o modificata, è possibile specificare regole di confronto per ciascuna colonna di stringhe di caratteri utilizzando la clausola COLLATE.When you create or alter a table, you can specify collations for each character-string column by using the COLLATE clause. Se non si specificano regole di confronto, alla colonna verranno assegnate le regole di confronto predefinite del database.If no collation is specified, the column is assigned the default collation of the database.

Regole di confronto a livello di espressioneExpression-level collations
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.Expression-level collations are set when a statement is run, and they affect the way a result set is returned. In questo modo i risultati dell'ordinamento ORDER BY possono essere specifici delle impostazioni locali.This enables ORDER BY sort results to be locale-specific. Per implementare regole di confronto a livello di espressione, usare una clausola COLLATE simile alla seguente:Use a COLLATE clause such as the following to implement expression-level collations:

SELECT name FROM customer ORDER BY name COLLATE Latin1_General_CS_AI;    

Impostazioni locali Locale

Le impostazioni locali rappresentano un set di informazioni associate a un paese o a una lingua.A locale is a set of information that is associated with a location or a culture. Possono includere il nome e l'identificatore della lingua parlata, lo script usato per la scrittura della lingua e le convenzioni culturali.This can include the name and identifier of the spoken language, the script that is used to write the language, and cultural conventions. Le regole di confronto possono essere associate a uno o più set di impostazioni locali.Collations can be associated with one or more locales. Per altre informazioni, vedere ID delle impostazioni locali assegnati da Microsoft.For more information, see Locale IDs Assigned by Microsoft.

Code Page Code Page

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 punto di codice.A code page is an ordered set of characters of a given script in which a numeric index, or code point value, is associated with each character. Per tabella codici di Windows si intende in genere un set di caratteri o charset.A Windows code page is typically referred to as a character set or charset. Queste tabelle vengono usate per supportare i set di caratteri e i layout di tastiera impiegati per le diverse impostazioni locali di Windows.Code pages are used to provide support for the character sets and keyboard layouts that are used by different Windows system locales.

Sort Order Sort Order

L'ordinamento specifica il modo in cui vengono ordinati i valori dei dati.Sort order specifies how data values are sorted. e influisce sui risultati del confronto dei dati stessi.This affects the results of data comparison. I dati vengono ordinati tramite regole di confronto e possono essere ottimizzati tramite indici.Data is sorted by using collations, and it can be optimized by using indexes.

Supporto Unicode Unicode Support

Unicode è uno standard per il mapping dei punti di codice ai caratteri.Unicode is a standard for mapping code points to characters. Dato che è progettato per supportare tutti i caratteri di tutte le lingue del mondo, non è necessario che set di caratteri diversi vengano gestiti da tabelle codici diverse.Because it is designed to cover all the characters of all the languages of the world, there is no need for different code pages to handle different sets of characters. Se vengono archiviati dati di tipo carattere che riflettono più lingue, usare sempre tipi di dati Unicode (nchar, nvarchare ntext) invece dei tipi di dati non Unicode (char, varchare text).If you store character data that reflects multiple languages, always use Unicode data types (nchar, nvarchar, and ntext) instead of the non-Unicode data types (char, varchar, and text).

Ai tipi di dati non Unicode sono associate numerose limitazioni,Significant limitations are associated with non-Unicode data types. in quanto nei computer non Unicode sarà disponibile una sola tabella codici.This is because a non-Unicode computer will be limited to use of a single code page. Utilizzando tipi di dati Unicode è possibile ottenere prestazioni migliori, in quanto è necessario un minor numero di conversioni tramite la tabella codici.You might experience performance gain by using Unicode because fewer code-page conversions are required. Le regole di confronto Unicode devono essere selezionate singolarmente a livello di database, di colonna o di espressione perché non sono supportate a livello di server.Unicode collations must be selected individually at the database, column or expression level because they are not supported at the server level.

Le tabelle codici usate da un client vengono determinate in base alle impostazioni del sistema operativo.The code pages that a client uses are determined by the operating system settings. Per impostare le tabelle codici del client nel sistema operativo Windows usare l'opzione Impostazioni internazionali del Pannello di controllo.To set client code pages on the Windows operating system, use Regional Settings in Control Panel.

Quando si spostano dati da un server a un client, le regole di confronto del server potrebbero non essere riconosciute dai driver client meno recenti.When you move data from a server to a client, your server collation might not be recognized by older client drivers. Questa situazione può verificarsi quando si spostano dati da un server Unicode a un client non Unicode.This can occur when you move data from a Unicode server to a non-Unicode client. La migliore opzione potrebbe consistere nell'aggiornare il sistema operativo client affinché vengano aggiornate le regole di confronto del sistema sottostanti.Your best option might be to upgrade the client operating system so that the underlying system collations are updated. Se nel client è installato il software client del database, è possibile applicare un aggiornamento dei servizi a tale software.If the client has database client software installed, you might consider applying a service update to the database client software.

È anche possibile tentare di usare regole di confronto diverse per i dati nel server.You can also try to use a different collation for the data on the server. Scegliere regole di confronto per le quali viene eseguito il mapping a una tabella codici nel client.Choose a collation that will map to a code page on the client.

Per usare le regole di confronto UTF-16 disponibili in SQL Server 2017SQL Server 2017, è possibile selezionare una delle regole di confronto _SC dei caratteri supplementari (solo regole di confronto di Windows) per migliorare la ricerca e l'ordinamento di alcuni caratteri Unicode.To use the UTF-16 collations available in SQL Server 2017SQL Server 2017, you can select one of the supplementary characters _SC collations (Windows collations only) to improve searching and sorting of some Unicode characters.

Per valutare i problemi relativi all'utilizzo di tipi di dati Unicode o non Unicode, è necessario eseguire il test dello scenario per verificare le differenze di prestazioni nell'ambiente specifico.To evaluate issues that are related to using Unicode or non-Unicode data types, test your scenario to measure performance differences in your environment. È consigliabile standardizzare le regole di confronto usate nei sistemi presenti nell'ambito dell'organizzazione, quindi distribuire server e client Unicode laddove possibile.It is a good practice to standardize the collation that is used on systems across your organization, and deploy Unicode servers and clients wherever possible.

In molti casi, SQL ServerSQL Server interagirà con altri server o client e l'organizzazione potrà usare più standard di accesso ai dati tra applicazioni e istanze del server.In many situations, SQL ServerSQL Server will interact with other servers or clients, and your organization might use multiple data access standards between applications and server instances. I client SQL ServerSQL Server sono principalmente di due tipi: SQL ServerSQL Server clients are one of two main types:

  • Client Unicode che usano OLE DB e ODBC (Open Database Connectivity) versione 3.7 o successive.Unicode clients that use OLE DB and Open Database Connectivity (ODBC) version 3.7 or a later version.

  • Client non Unicode che usano DB-Library e ODBC versione 3.6 o precedenti.Non-Unicode clients that use DB-Library and ODBC version 3.6 or an earlier version.

    Nella tabella seguente sono riportate informazioni sull'utilizzo di dati multilingue con diverse combinazioni di server Unicode e non Unicode.The following table provides information about using multilingual data with various combinations of Unicode and non-Unicode servers.

ServerServer ClientClient Vantaggi o limitazioniBenefits or Limitations
UnicodeUnicode UnicodeUnicode Poiché i dati Unicode verranno usati in tutto il sistema, questo scenario fornisce prestazioni ottimali e la migliore protezione da eventuali danni ai dati recuperati.Because Unicode data will be used throughout the system, this scenario provides the best performance and protection from corruption of retrieved data. Si applica ad ADO (ActiveX Data Objects), OLE DB e ODBC versione 3.7 o successive.This is the situation with ActiveX Data Objects (ADO), OLE DB, and ODBC version 3.7 or a later version.
UnicodeUnicode Non UnicodeNon-Unicode In questo scenario, in particolare con le connessioni tra un server in cui è in esecuzione un sistema operativo più recente e un client in cui è in esecuzione una versione precedente di SQL ServerSQL Servero di un sistema operativo, possono riscontrarsi limitazioni o errori quando si spostano i dati in un computer client.In this scenario, especially with connections between a server that is running a newer operating system and a client that is running an older version of SQL ServerSQL Server, or on an older operating system, there can be limitations or errors when you move data to a client computer. Per convertire i dati, verrà tentato il mapping tra i dati Unicode presenti sul server e una tabella codici corrispondente sul client non Unicode.Unicode data on the server will try to map to a corresponding code page on the non-Unicode client to convert the data.
Non UnicodeNon-Unicode UnicodeUnicode Non si tratta di una configurazione ideale per l'utilizzo di dati multilingue.This is not an ideal configuration for using multilingual data. Non sarà possibile scrivere dati Unicode nel server non UnicodeYou cannot write Unicode data to the non-Unicode server. e potrebbero verificarsi problemi all'invio dei dati ai server che non rientrano nella tabella codici del server.Problems are likely to occur when data is sent to servers that are outside the server's code page.
Non UnicodeNon-Unicode Non UnicodeNon-Unicode Si tratta di uno scenario che presenta numerose limitazioni per i dati multilingue.This is a very limiting scenario for multilingual data. È possibile usare solo una tabella codici.You can use only a single code page.

Caratteri supplementari Supplementary Characters

SQL ServerSQL Server fornisce tipi di dati come nchar e nvarchar per archiviare i dati Unicode. provides data types such as nchar and nvarchar to store Unicode data. Questi tipi di dati codificano il testo in un formato denominato UTF-16.These data types encode text in a format called UTF-16. L'Unicode Consortium assegna a ogni carattere un punto di codice univoco, che corrisponde a un valore nell'intervallo compreso tra 0x0000 e 0x10FFFF.The Unicode Consortium allocates each character a unique codepoint, which is a value in the range 0x0000 to 0x10FFFF. Benché i caratteri più frequentemente usati siano associati a valori di punti di codice compresi in una parola a 16 bit in memoria e su disco, i caratteri con valori di punti di codice maggiori di 0xFFFF richiedono due parole a 16 bit consecutive.The most frequently used characters have codepoint values that will fit into a 16-bit word in memory and on disk, but characters with codepoint values larger than 0xFFFF require two consecutive 16-bit words. Questi caratteri sono denominati caratteri supplementarie le due parole a 16 bit consecutive sono denominate coppie di surrogati.These characters are called supplementary characters, and the two consecutive 16-bit words are called surrogate pairs.

Se si utilizzano caratteri supplementari:If you use supplementary characters:

  • I caratteri supplementari possono essere usati in operazioni di ordinamento e confronto solo con le versioni delle regole di confronto 90 o successive.Supplementary characters can be used in ordering and comparison operations in collation versions 90 or greater.

  • Tutte le regole di confronto di livello _100 supportano l'ordinamento linguistico con caratteri supplementari.All _100 level collations support linguistic sorting with supplementary characters.

  • L'utilizzo dei caratteri supplementari in metadati, ad esempio in nomi di oggetti di database, non è supportato.Supplementary characters are not supported for use in metadata, such as in names of database objects.

  • A partire da SQL Server 2012SQL Server 2012, è possibile usare una nuova famiglia di regole di confronto per caratteri supplementari (SC) con i tipi di dati nchar, nvarchar e sql_variant.Introduced in SQL Server 2012SQL Server 2012, a new family of supplementary character (SC) collations can be used with the data types nchar, nvarchar and sql_variant. Ad esempio: Latin1_General_100_CI_AS_SCo, se si utilizzano regole di confronto giapponesi, Japanese_Bushu_Kakusu_100_CI_AS_SC.For example: Latin1_General_100_CI_AS_SC, or if using a Japanese collation, Japanese_Bushu_Kakusu_100_CI_AS_SC.

    Il flag SC può essere applicato a:The SC flag can be applied to:

    • Regole di confronto di Windows versione 90Version 90 Windows collations

    • Regole di confronto di Windows versione 100Version 100 Windows collations

      Il flag SC non può essere applicato a:The SC flag cannot be applied to:

    • Regole di confronto di Windows senza versione, versione 80Version 80 non-versioned Windows collations

    • Regole di confronto binarie BIN o BIN2The BIN or BIN2 binary collations

    • Regole di confronto SQLThe SQL collations

    Nella tabella seguente viene confrontato il comportamento di alcune funzioni per i valori stringa e di alcuni operatori di stringa quando vengono usati caratteri supplementari con e senza regole di confronto SC.The following table compares the behavior of some string functions and string operators when they use supplementary characters with and without a SC collation.

Funzione per i valori stringa o operatore di stringaString Function or Operator Con regole di confronto SCWith an SC Collation Senza regole di confronto SCWithout an SC Collation
CHARINDEXCHARINDEX

LENLEN

PATINDEXPATINDEX
La coppia di surrogati UTF-16 viene conteggiata come singolo punto di codice.The UTF-16 surrogate pair is counted as a single codepoint. La coppia di surrogati UTF-16 viene conteggiata come due punti di codice.The UTF-16 surrogate pair is counted as two codepoints.
LEFTLEFT

REPLACEREPLACE

REVERSEREVERSE

RIGHTRIGHT

SUBSTRINGSUBSTRING

STUFFSTUFF
Queste funzioni considerano ogni coppia di surrogati un singolo punto di codice e funzionano come previsto.These functions treat each surrogate pair as a single codepoint and work as expected. Queste funzioni possono dividere qualsiasi coppia di surrogati e provocare risultati imprevisti.These functions may split any surrogate pairs and lead to unexpected results.
NCHARNCHAR Restituisce il carattere corrispondente al valore del punto di codice Unicode specificato nell'intervallo compreso tra 0 e 0x10FFFF.Returns the character corresponding to the specified Unicode codepoint value in the range 0 to 0x10FFFF. Se il valore specificato è incluso nell'intervallo compreso tra 0 e 0xFFFF, viene restituito un carattere.If the value specified lies in the range 0 through 0xFFFF, one character is returned. Per valori superiori, viene restituito il surrogato corrispondente.For higher values, the corresponding surrogate is returned. Un valore maggiore di 0xFFFF restituisce NULL anziché il surrogato corrispondente.A value higher than 0xFFFF returns NULL instead of the corresponding surrogate.
UNICODEUNICODE Restituisce un punto di codice UTF-16 nell'intervallo compreso tra 0 e 0x10FFFF.Returns a UTF-16 codepoint in the range 0 through 0x10FFFF. Restituisce un punto di codice UCS-2 nell'intervallo compreso tra 0 e 0xFFFF.Returns a UCS-2 codepoint in the range 0 through 0xFFFF.
Carattere jolly per corrispondenze di singoli caratteriMatch One Character Wildcard

Carattere jolly per la mancata corrispondenza dei caratteriWildcard - Character(s) Not to Match
Sono supportati caratteri supplementari per tutte le operazioni con caratteri jolly.Supplementary characters are supported for all wildcard operations. Non sono supportati caratteri supplementari per queste operazioni con caratteri jolly.Supplementary characters are not supported for these wildcard operations. Sono supportati altri operatori jolly.Other wildcard operators are supported.

Supporto GB18030 GB18030 Support

GB18030 è uno standard separato usato nella Repubblica popolare Cinese per la codifica dei caratteri cinesi.GB18030 is a separate standard used in the People's Republic of China for encoding Chinese characters. In GB18030, i caratteri possono essere di 1, 2 o 4 byte di lunghezza.In GB18030, characters can be 1, 2, or 4 bytes in length. SQL ServerSQL Server offre supporto per i caratteri con codifica GB18030 consentendone il riconoscimento al momento dell'ingresso nel server da un'applicazione client e la conversione e archiviazione come caratteri Unicode a livello nativo. provides support for GB18030-encoded characters by recognizing them when they enter the server from a client-side application and converting and storing them natively as Unicode characters. Dopo essere stati archiviati nel server, tali caratteri vengono trattati come caratteri Unicode in tutte le operazioni successive.After they are stored in the server, they are treated as Unicode characters in any subsequent operations. È possibile usare una qualsiasi regola di confronto cinese, preferibilmente la versione 100 più recente.You can use any Chinese collation, preferably the latest 100 version. Tutte le regole di confronto di livello _100 supportano l'ordinamento linguistico con caratteri GB18030.All _100 level collations support linguistic sorting with GB18030 characters. Se nei dati sono inclusi caratteri supplementari (coppie surrogate), è possibile usare le regole di confronto SC in SQL Server 2017SQL Server 2017 per migliorare la ricerca e l'ordinamento.If the data includes supplementary characters (surrogate pairs), you can use the SC collations available in SQL Server 2017SQL Server 2017 to improve searching and sorting.

Supporto di lingue con alfabeti non latini Complex Script Support

In SQL ServerSQL Server può essere supportata l'immissione, l'archiviazione, la modifica e la visualizzazione di lingue con alfabeti non latini. SQL ServerSQL Server can support inputting, storing, changing, and displaying complex scripts. Le lingue con alfabeti non latini includono:Complex scripts include the following:

  • Lingue che presentano una combinazione di testo scritto sia da destra verso sinistra sia da sinistra verso destra, ad esempio una combinazione di testo in arabo e inglese.Scripts that include the combination of both right-to-left and left-to-right text, such as a combination of Arabic and English text.

  • Lingue i cui caratteri assumono una forma diversa a seconda della posizione oppure combinati con altri caratteri, ad esempio arabi, indiani e thai.Scripts whose characters change shape depending on their position, or when combined with other characters, such as Arabic, Indic, and Thai characters.

  • Lingue come il thai che richiedono dizionari interni per il riconoscimento delle parole in quanto non vi sono interruzioni tra di loro.Languages such as Thai that require internal dictionaries to recognize words because there are no breaks between them.

    Le applicazioni di database che interagiscono con SQL ServerSQL Server devono usare controlli che supportano le lingue con alfabeti non latini.Database applications that interact with SQL ServerSQL Server must use controls that support complex scripts. I form standard di Windows creati in codice gestito sono abilitati per le lingue con alfabeti non latini.Standard Windows form controls that are created in managed code are complex script-enabled.

aggiunte in SQL Server 2017SQL Server 2017 Japanese Collations added in SQL Server 2017SQL Server 2017

A partire da SQL Server 2017SQL Server 2017, sono supportate due nuove famiglie di regole di confronto per il giapponese, con le permutazioni delle varie opzioni (_CS, _AS, _KS, _WS, _VSS e così via).Starting in SQL Server 2017SQL Server 2017, two new Japanese collation families are supported, with the permutations of various options (_CS, _AS, _KS, _WS, _VSS, etc).

Per elencare queste regole di confronto, è possibile eseguire una query nel motore di database di SQL Server:To list these collations, you may query the SQL Server Database Engine:

SELECT Name, Description FROM fn_helpcollations()  
WHERE Name LIKE 'Japanese_Bushu_Kakusu_140%' OR Name LIKE 'Japanese_XJIS_140%'

Queste regole di confronto sono supportate negli indici del motore di database, nelle tabelle con ottimizzazione per la memoria, negli indici columnstore e nei moduli compilati in modo nativo.These collations are supported in Database Engine indexes, memory-optimized tables, columnstore indexes, and natively compiled modules.

AttivitàTask ArgomentoTopic
Viene descritto come impostare o modificare le regole di confronto dell'istanza di SQL Server.Describes how to set or change the collation of the instance of SQL Server. Impostazione o modifica di regole di confronto del serverSet or Change the Server Collation
Viene descritto come impostare o modificare le regole di confronto di un database utente.Describes how to set or change the collation of a user database. Impostare o modificare le regole di confronto del databaseSet or Change the Database Collation
Viene descritto come impostare o modificare le regole di confronto di una colonna nel database.Describes how to set or change the collation of a column in the database. Impostare o modificare le regole di confronto delle colonneSet or Change the Column Collation
Viene descritto come restituire informazioni sulle regole di confronto a livello di server, di database o di colonna.Describes how to return collation information at the server, database, or column level. Visualizzazione di informazioni sulle regole di confrontoView Collation Information
Viene descritto come scrivere istruzioni Transact-SQL per aumentarne la portabilità da un linguaggio a un altro o per supportare più linguaggi con maggiore facilità.Describes how to write Transact-SQL statements that will make them more portable from one language to another, or support multiple languages more easily. Scrittura di istruzioni Transact-SQL internazionaliWrite International Transact-SQL Statements
Viene descritto come modificare la lingua dei messaggi di errore e le preferenze di utilizzo e visualizzazione dei dati di tipo data, ora e valuta.Describes how to change the language of error messages and preferences for how date, time, and currency data are used and displayed. Impostazione di una lingua di sessioneSet a Session Language

SQL Server Best Practices Collation ChangeSQL Server Best Practices Collation Change

SQL Server Best Practices Migration to Unicode"SQL Server Best Practices Migration to Unicode"

Sito Web Unicode ConsortiumUnicode Consortium Web site

Vedere ancheSee Also

Regole di confronto dei database indipendenti Contained Database Collations
Scelta di una lingua durante la creazione di un indice full-text Choose a Language When Creating a Full-Text Index
sys.fn_helpcollations (Transact-SQL)sys.fn_helpcollations (Transact-SQL)