Collation and Unicode SupportCollation and Unicode Support

Sortierungen in SQL ServerSQL Server bieten Sortierregeln und die Berücksichtigung von Groß-/Kleinschreibung und Akzenten für die Daten.Collations in SQL ServerSQL Server provide sorting rules, case, and accent sensitivity properties for your data. Sortierungen, die mit Zeichendatentypen wie char und varchar verwendet werden, geben die Codeseite und die entsprechenden Zeichen vor, die für den jeweiligen Datentyp dargestellt werden können.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. Bei der Installation einer neuen Instanz von SQL ServerSQL Server, bei der Wiederherstellung einer Datenbanksicherung oder bei der Verbindung von Servern mit Clientdatenbanken ist es wichtig, dass Sie die Gebietsschemaanforderungen, die Sortierreihenfolge und das Verhalten in Bezug auf die Groß-/Kleinschreibung und Akzente der Daten kennen, mit denen Sie arbeiten.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. Informationen zum Auflisten von Sortierungen, die in Ihrer SQL ServerSQL Server-Instanz verfügbar sind, finden Sie unter sys.fn_helpcollations (Transact-SQL).To list the collations available on your instance of SQL ServerSQL Server, see sys.fn_helpcollations (Transact-SQL).

Wenn Sie eine Sortierung für den Server, die Datenbank, die Spalte oder den Ausdruck auswählen, weisen Sie den Daten bestimmte Merkmale zu, die Auswirkungen auf die Ergebnisse vieler Datenbankvorgänge haben.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. Wenn Sie beispielsweise eine Abfrage mit ORDER BY erstellen, kann die Sortierreihenfolge des Resultsets von der Sortierung abhängen, die für die Datenbank gilt oder die in einer COLLATE-Klausel auf Ausdrucksebene der Abfrage vorgegeben ist.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.

Zur optimalen Verwendung der Sortierungsunterstützung in SQL ServerSQL Serverist es erforderlich, die in diesem Thema beschriebenen Begriffe zu verstehen und zu wissen, wie sie mit den Eigenschaften der Daten in Zusammenhang stehen.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.

Collation Terms Collation Terms

Sortierung Collation

Eine Sortierung gibt die Bitmuster an, die die jeweiligen Zeichen in einem Datensatz darstellen.A collation specifies the bit patterns that represent each character in a data set. Sortierungen legen außerdem die Regeln fest, nach denen Daten sortiert und verglichen werden.Collations also determine the rules that sort and compare data. SQL ServerSQL Server unterstützt das Speichern von Objekten mit verschiedenen Sortierungen in einer Datenbank. supports storing objects that have different collations in a single database. Bei Nicht-Unicode-Spalten gibt die Sortierungseinstellung die Codepage für die Daten und die Zeichen an, die dargestellt werden können.For non-Unicode columns, the collation setting specifies the code page for the data and which characters can be represented. Daten, die zwischen Nicht-Unicode-Spalten verschoben werden, müssen jedoch von der Quellcodepage in die Zielcodepage konvertiert werden.Data that is moved between non-Unicode columns must be converted from the source code page to the destination code page.

Transact-SQLTransact-SQL -Anweisungsergebnisse können unterschiedlich sein, wenn die Anweisung im Kontext verschiedener Datenbanken ausgeführt wird, die jeweils andere Sortierungseinstellungen haben. statement results can vary when the statement is run in the context of different databases that have different collation settings. Wenn möglich, sollte in Unternehmen eine standardisierte Sortierung verwendet werden.If it is possible, use a standardized collation for your organization. Auf diese Weise müssen Sie die Sortierung nicht explizit für jedes Zeichen oder jeden Unicode-Ausdruck angeben.This way, you do not have to explicitly specify the collation in every character or Unicode expression. Bei Objekten mit abweichenden Sortierungs- oder Codepageeinstellungen codieren Sie Ihre Abfragen so, dass diese den Regeln der Sortierungspriorität entsprechen.If you must work with objects that have different collation and code page settings, code your queries to consider the rules of collation precedence. Weitere Informationen finden Sie unter Rangfolge der Sortierungen (Transact-SQL).For more information, see Collation Precedence (Transact-SQL).

Die einer Sortierung zugeordneten Optionen sind die Berücksichtigung von Groß-/Kleinschreibung, Akzenten, Kana, Breite und Variierungsauswahlzeichen.The options associated with a collation are case sensitivity, accent sensitivity, Kana-sensitivity, width sensitivity, variation-selector-sensitivity. Diese Optionen werden angegeben, indem sie an den Sortierungsnamen angefügt werden.These options are specified by appending them to the collation name. Beispiel: Bei der Sortierung Japanese_Bushu_Kakusu_100_CS_AS_KS_WS wird nach Groß-/Kleinschreibung, nach Akzent, Kana und Breite unterschieden.For example, this collation Japanese_Bushu_Kakusu_100_CS_AS_KS_WS is case-sensitive, accent-sensitive, Kana-sensitive, and width-sensitive. Als weiteres Beispiel berücksichtigt diese Sortierung Japanese_Bushu_Kakusu_140_CI_AI_KS_WS_VSS Groß-/Kleinschreibung und Akzente nicht, wohl aber Kana, Breite und Variierungsauswahlzeichen.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. In der folgenden Tabelle wird das den verschiedenen Optionen zugeordnete Verhalten beschrieben.The following table describes the behavior associated with these various options.

OptionOption BeschreibungDescription
Unterscheidung nach Groß-/Kleinschreibung (_CS)Case-sensitive (_CS) Unterscheidet zwischen Groß- und Kleinbuchstaben.Distinguishes between uppercase and lowercase letters. Wenn diese Option ausgewählt ist, stehen Kleinbuchstaben in der Sortierreihenfolge vor ihren entsprechenden Großbuchstaben.If selected, lowercase letters sort ahead of their uppercase versions. Wenn diese Option nicht aktiviert wird, wird bei der Sortierung die Groß-/Kleinschreibung nicht beachtet.If this option is not selected, the collation will be case-insensitive. D. h. SQL Server betrachtet die groß- und die kleingeschriebenen Versionen von Buchstaben für Sortierzwecke als identisch.That is, SQL Server considers the uppercase and lowercase versions of letters to be identical for sorting purposes. Sie können die Nichtunterscheidung nach Groß-/Kleinbuchstaben durch Angeben von "_CI" explizit auswählen.You can explicitly select case insensitivity by specifying _CI.
Unterscheidung nach Akzent (_AS)Accent-sensitive (_AS) Unterscheidet zwischen Zeichen mit Akzent und Zeichen ohne Akzent.Distinguishes between accented and unaccented characters. Beispielsweise ist 'a' nicht mit 'ấ' identisch.For example, 'a' is not equal to 'ấ'. Wenn diese Option nicht aktiviert wird, werden bei der Sortierung Akzente nicht beachtet.If this option is not selected, the collation will be accent-insensitive. D. h. SQL Server betrachtet die Versionen von Buchstaben mit und ohne Akzent für Sortierzwecke als identisch.That is, SQL Server considers the accented and unaccented versions of letters to be identical for sorting purposes. Sie können die Nichtunterscheidung nach Akzent durch Angeben von "_AI" explizit auswählen.You can explicitly select accent insensitivity by specifying _AI.
Unterscheidung nach Kana (_KS)Kana-sensitive (_KS) Unterscheidet zwischen den zwei Arten japanischer Kana-Zeichen: Hiragana und Katakana.Distinguishes between the two types of Japanese kana characters: Hiragana and Katakana. Wenn diese Option nicht aktiviert wird, wird bei der Sortierung Kana nicht beachtet.If this option is not selected, the collation is Kana-insensitive. D. h. SQL Server unterscheidet bei der Sortierung nicht zwischen Hiragana- und Katakana-Zeichen.That is, SQL Server considers Hiragana and Katakana characters to be equal for sorting purposes. Das Weglassen dieser Option ist die einzige Möglichkeit, die Nichtbeachtung von Kana anzugeben.Omitting this option is the only method of specifying Kana-insensitivity.
Unterscheidung nach Breite (_WS)Width-sensitive (_WS) Unterscheidet zwischen Zeichen halber Breite und Zeichen normaler Breite.Distinguishes between full-width and half-width characters. Wenn diese Option nicht ausgewählt ist, betrachtet SQL Server die Darstellung in halber Breite und in normaler Breite desselben Zeichens für Sortierzwecke als identisch.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. Das Weglassen dieser Option ist die einzige Möglichkeit, die Nichtbeachtung der Breite anzugeben.Omitting this option is the only method of specifying width-insensitivity.
Mit Unterscheidung nach Variierungsauswahlzeichen (_VSS)Variation-selector-sensitive (_VSS) Unterscheidet zwischen verschiedenen Variierungsauswahlzeichen für Ideogramme in den japanischen Sortierungen Japanese_Bushu_Kakusu_140 und Japanese_XJIS_140, die erstmals in SQL Server 2017SQL Server 2017eingeführt wurden.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. Eine Variierungssequenz besteht aus einem Basiszeichen plus einem ergänzenden Variierungsauswahlzeichen.A variation sequence consists of a base character plus an additional variation selector. Wenn diese _VSS-Option nicht aktiviert ist, berücksichtigt die Sortierung die Variierung nicht, und das Variierungsauswahlzeichen wird im Vergleich nicht berücksichtigt.If this _VSS option is not selected, the collation is variation selector insensitive, and the variation selector is not considered in the comparison. Das bedeutet, dass SQL Server Zeichen, die auf dem gleichen Basiszeichen aufbauen, aber verschiedene Variierungsauswahlzeichen aufweisen, für Sortierungszwecke als identisch.That is, SQL Server considers characters built upon the same base character with differing variation selectors to be identical for sorting purposes. Weitere Informationen enthält auch die Unicode Ideographic Variation Database (Unicode-Datenbank der Ideogrammvariierungen).See also Unicode Ideographic Variation Database.

Variierungsauswahlzeichen unterstützende Sortierungen (_VSS) werden in Indizes für die Volltextsuche nicht unterstützt.Variation selector sensitive (_VSS) collations are not supported in Full-text search indexes. Indizes für die Volltextsuche unterstützen nur Optionen für die Unterscheidung nach Akzent (_AS), Kana (_KS) und Breite (_WS).Full-text search indexes support only Accent-Sensitive (_AS), Kana-sensitive (_KS), and Width-sensitive (_WS) options. Die SQL Server XML- und CLR-Module unterstützen keine Variierungsauswahlzeichen (_VSS).SQL Server XML and CLR engines do not support (_VSS) Variation selectors.

SQL ServerSQL Server unterstützt die folgenden Sortierungssätze: supports the following collation sets:

Windows-SortierungenWindows collations
Windows-Sortierungen definieren Regeln zum Speichern von Zeichendaten, die auf dem zugehörigen Windows-Systemgebietsschema basieren.Windows collations define rules for storing character data that are based on an associated Windows system locale. Bei einer Windows-Sortierung wird der Vergleich der Nicht-Unicode-Daten implementiert, indem derselbe Algorithmus wie bei Unicode-Daten verwendet wird.For a Windows collation, comparison of non-Unicode data is implemented by using the same algorithm as Unicode data. Die grundlegenden Regeln für Windows-Sortierreihenfolgen geben an, welches Alphabet oder welche Sprache verwendet wird, wenn Wörterbuchsortierung angewendet wird. Zudem geben die Regeln die Codepage an, die zum Speichern von Nicht-Unicode-Zeichendaten verwendet wird.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. Sowohl die Unicode- als auch die Nicht-Unicode-Sortierung sind kompatibel mit Zeichenfolgenvergleichen in einer bestimmten Version von Windows.Both Unicode and non-Unicode sorting are compatible with string comparisons in a particular version of Windows. Dadurch wird die Konsistenz der Datentypen in SQL ServerSQL Server ermöglicht. Außerdem erhalten Entwickler so die Möglichkeit, Zeichenfolgen in ihren Anwendungen mithilfe der gleichen Regeln zu sortieren, die auch in SQL ServerSQL Server verwendet werden.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. Weitere Informationen finden Sie unter Name der Windows-Sortierung (Transact-SQL).For more information, see Windows Collation Name (Transact-SQL).

Binäre SortierungenBinary collations
Binäre Sortierungen sortieren Daten basierend auf der Reihenfolge codierter Werte, die vom Gebietsschema und Datentyp definiert werden.Binary collations sort data based on the sequence of coded values that are defined by the locale and data type. Dabei wird die Groß- und Kleinschreibung beachtet.They are case sensitive. Eine binäre Sortierung in SQL ServerSQL Server definiert das zu verwendende Gebietsschema sowie die zu verwendende ANSI-Codepage.A binary collation in SQL ServerSQL Server defines the locale and the ANSI code page that will be used. Dies erzwingt eine binäre Sortierreihenfolge.This enforces a binary sort order. Da binäre Sortierungen relativ einfach sind, tragen sie dazu bei, die Anwendungsleistung zu verbessern.Because they are relatively simple, binary collations help improve application performance. Bei Nicht-Unicode-Datentypen basieren Datenvergleiche auf den in der ANSI-Codepage definierten Codepunkten.For non-Unicode data types, data comparisons are based on the code points that are defined in the ANSI code page. Bei Unicode-Datentypen basieren Datenvergleiche auf den Unicode-Codepunkten.For Unicode data types, data comparisons are based on the Unicode code points. Bei binären Sortierungen von Unicode-Datentypen wird das Gebietsschema bei Datensortierungen nicht berücksichtigt.For binary collations on Unicode data types, the locale is not considered in data sorts. Beispielsweise führen „Latin_1_General_BIN“ und „Japanese_BIN“ bei Unicode-Daten zu den gleichen Sortierergebnissen.For example, Latin_1_General_BIN and Japanese_BIN yield identical sorting results when they are used on Unicode data.

In SQL ServerSQL Servergibt es zwei Arten von binären Sortierungen: die älteren BIN -Sortierungen und die neueren BIN2 -Sortierungen.There are two types of binary collations in SQL ServerSQL Server; the older BIN collations and the newer BIN2 collations. In einer BIN2 -Sortierung werden alle Zeichen entsprechend ihren Codepunkten sortiert.In a BIN2 collation all characters are sorted according to their code points. In einer BIN -Sortierung wird nur der erste Buchstabe nach Codepunkt sortiert, die verbleibenden Zeichen werden entsprechend ihren Bytewerten sortiert.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. (Da die Intel Plattform eine Little-Endian-Architektur aufweist, werden Unicode-Zeichen immer mit vertauschten Bytes gespeichert.)(Because the Intel platform is a little endian architecture, Unicode code characters are always stored byte-swapped.)

SQL Server-SortierungenSQL Server collations
SQL ServerSQL Server -Sortierungen (SQL_) sind hinsichtlich der Sortierreihenfolge mit älteren Versionen von SQL ServerSQL Serverkompatibel. SQL ServerSQL Server collations (SQL_) provide sort order compatibility with earlier versions of SQL ServerSQL Server. Die Wörterbuch-Sortierungsregeln für Nicht-Unicode-Daten sind nicht kompatibel mit den vom Betriebssystem Windows bereitgestellten Sortierroutinen.The dictionary sorting rules for non-Unicode data are incompatible with any sorting routine that is provided by Windows operating systems. Das Sortieren von Unicode-Daten ist jedoch kompatibel mit einer bestimmten Version der Windows-Sortierregeln.However, sorting Unicode data is compatible with a particular version of Windows sorting rules. Da SQL ServerSQL Server-Sortierungen unterschiedliche Vergleichsregeln für Nicht-Unicode- und Unicode-Daten verwenden, werden bei Vergleichen derselben Daten, je nach dem zugrunde liegenden Datentyp, unterschiedliche Ergebnisse angezeigt.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. Weitere Informationen finden Sie unter Name der SQL Server-Sortierung (Transact-SQL).For more information, see SQL Server Collation Name (Transact-SQL).

Hinweis

Wenn Sie eine englischsprachige Instanz von SQL ServerSQL Server aktualisieren, können Sie SQL ServerSQL Server-Sortierungen (SQL_) angeben, die mit vorhandenen Instanzen von SQL ServerSQL Server kompatibel sein sollen.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. Da die Standardsortierung einer Instanz von SQL ServerSQL Server während des Setups festgelegt wird, geben Sie unbedingt die Sortierungseinstellungen in den folgenden Fällen sorgfältig an: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:

  • Der Anwendungscode ist abhängig vom Verhalten der vorherigen SQL ServerSQL Server -Sortierungen.Your application code depends on the behavior of previous SQL ServerSQL Server collations.
    • Sie müssen Zeichendaten speichern, die mehrere Sprachen wiedergeben.You must store character data that reflects multiple languages.

Das Festlegen von Sortierungen wird bei einer Instanz von SQL ServerSQL Serverfür die folgenden Ebenen unterstützt:Setting collations are supported at the following levels of an instance of SQL ServerSQL Server:

Sortierungen auf ServerebeneServer-level collations
Die Standardserversortierung wird während des SQL ServerSQL Server -Setups festgelegt und außerdem als Standardsortierung der Systemdatenbanken und aller Benutzerdatenbanken vorgegeben.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. Beachten Sie, dass Nur-Unicode-Sortierungen während des SQL ServerSQL Server -Setups nicht ausgewählt werden können, da sie nicht als Sortierungen auf Serverebene unterstützt werden.Note that Unicode-only collations cannot be selected during SQL ServerSQL Server setup because they are not supported as server-level collations.

Nach dem Zuordnen einer Sortierung zum Server können Sie die Sortierung nur ändern, indem Sie alle Datenbankobjekte und -daten exportieren, die master -Datenbank erneut erstellen und alle Datenbankobjekte und -daten importieren.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. Statt die Standardsortierung einer Instanz von SQL ServerSQL Serverzu ändern, können Sie die gewünschte Sortierung auch beim Erstellen einer neuen Datenbank oder Datenbankspalte angeben.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.

Sortierungen auf DatenbankebeneDatabase-level collations
Beim Anlegen oder Ändern einer Datenbank können Sie die Standardsortierung der Datenbank mithilfe der COLLATE-Klausel der CREATE DATABASE- oder ALTER DATABASE-Anweisung angeben.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. Wenn keine Sortierung angegeben wird, wird die Datenbank der Serversortierung zugeordnet.If no collation is specified, the database is assigned the server collation.

Sie können die Sortierung von Systemdatenbanken nur ändern, indem Sie die Sortierung für den Server ändern.You cannot change the collation of system databases except by changing the collation for the server.

Die Datenbanksortierung wird für alle Metadaten in der Datenbank verwendet und ist der Standard für alle Zeichenfolgenspalten, temporären Objekte, Variablennamen und anderen in der Datenbank verwendeten Zeichenfolgen.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. Wenn Sie die Sortierung einer Benutzerdatenbank ändern, treten möglicherweise Sortierungskonflikte auf, wenn Abfragen in der Datenbank auf temporäre Tabellen zugreifen.When you change the collation of a user database, there can be collation conflicts when queries in the database access temporary tables. Temporäre Tabellen werden immer in der Systemdatenbank tempdb gespeichert, die die Sortierung für die Instanz verwendet.Temporary tables are always stored in the tempdb system database, which will use the collation for the instance. Abfragen, die Zeichendaten aus der Benutzerdatenbank und tempdb vergleichen, schlagen möglicherweise fehl, wenn die Sortierungen einen Konflikt beim Auswerten der Zeichendaten verursachen.Queries that compare character data between the user database and tempdb may fail if the collations cause a conflict in evaluating the character data. Sie können dieses Problem umgehen, wenn Sie die COLLATE-Klausel in der Abfrage angeben.You can resolve this by specifying the COLLATE clause in the query. Weitere Informationen finden Sie unter COLLATE (Transact-SQL).For more information, see COLLATE (Transact-SQL).

Sortierungen auf SpaltenebeneColumn-level collations
Beim Erstellen oder Ändern einer Tabelle können Sie mithilfe der COLLATE-Klausel Sortierungen für alle Zeichenfolgenspalten angeben.When you create or alter a table, you can specify collations for each character-string column by using the COLLATE clause. Wenn keine Sortierung angegeben ist, wird der Spalte die Standardsortierung der Datenbank zugewiesen.If no collation is specified, the column is assigned the default collation of the database.

Sortierungen auf AusdrucksebeneExpression-level collations
Sortierungen auf Ausdrucksebene werden zum Zeitpunkt der Ausführung einer Anweisung festgelegt. Sie haben Auswirkungen auf die Art und Weise, wie ein Resultset zurückgegeben wird.Expression-level collations are set when a statement is run, and they affect the way a result set is returned. Somit können die ORDER BY-Sortierergebnisse gebietsschemaspezifisch sein.This enables ORDER BY sort results to be locale-specific. Implementieren Sie mithilfe einer COLLATE-Klausel, die folgendermaßen aussehen kann, Sortierungen auf Ausdrucksebene: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;    

Gebietsschema Locale

Ein Gebietsschema ist ein Satz von Informationen, die einem Ort oder einer Kultur zugeordnet sind.A locale is a set of information that is associated with a location or a culture. Es kann Name und Bezeichner der gesprochenen Sprache, die Schrift, die zum Schreiben dieser Sprache verwendet wird, sowie kulturelle Konventionen enthalten.This can include the name and identifier of the spoken language, the script that is used to write the language, and cultural conventions. Sortierungen können einem oder mehreren Gebietsschemas zugeordnet sein.Collations can be associated with one or more locales. Weitere Informationen finden Sie unter Von Microsoft zugewiesene Gebietsschemabezeichner (LCIDs).For more information, see Locale IDs Assigned by Microsoft.

Code Page Code Page

Eine Codepage ist ein geordneter Satz von Zeichen in einem vorgegebenen Skript, in dem ein numerischer Index, oder Codepunktwert, mit jedem Zeichen verbunden ist.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. Eine Codepage in Windows wird in der Regal als Zeichensatz oder charsetbezeichnet.A Windows code page is typically referred to as a character set or charset. Codepages werden zur Unterstützung der Zeichensätze und Tastaturlayouts verschiedener Windows-Systemgebietsschemas verwendet.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

Die Sortierreihenfolge gibt an, wie Datenwerte sortiert werden.Sort order specifies how data values are sorted. Dies wirkt sich auf die Ergebnisse des Datenvergleichs aus.This affects the results of data comparison. Daten werden mithilfe von Sortierungen sortiert, die mit Indizes optimiert werden können.Data is sorted by using collations, and it can be optimized by using indexes.

Unicode Support Unicode Support

Unicode ist ein Standard zum Zuordnen von Codepunkten zu Zeichen.Unicode is a standard for mapping code points to characters. Da dieser Standard entwickelt wurde, um alle Zeichen aus allen Sprachen der Welt zu unterstützen, besteht keine Notwendigkeit für unterschiedliche Codepages zur Handhabung der verschiedenen Zeichensätze.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. Wenn Sie Zeichendaten speichern, die mehrere Sprachen darstellen, verwenden Sie immer Unicode-Datentypen (nchar, nvarcharund ntext) anstelle von Nicht-Unicode-Datentypen (char, varcharund 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).

Nicht-Unicode-Datentypen verfügen über umfassende Einschränkungen.Significant limitations are associated with non-Unicode data types. Das liegt daran, dass ein Nicht-Unicode-Computer auf die Verwendung einer einzelnen Codepage beschränkt ist.This is because a non-Unicode computer will be limited to use of a single code page. Es kann sein, dass Sie mit Unicode eine bessere Systemleistung erzielen, da weniger Codepagekonvertierungen erforderlich sind.You might experience performance gain by using Unicode because fewer code-page conversions are required. Unicode-Sortierungen müssen auf der Datenbank-, Spalten- oder Ausdrucksebene einzeln ausgewählt werden, weil sie auf Serverebene nicht unterstützt werden.Unicode collations must be selected individually at the database, column or expression level because they are not supported at the server level.

Die Codepages, die ein Client verwendet, werden durch die Einstellungen des Betriebssystems bestimmt.The code pages that a client uses are determined by the operating system settings. Verwenden Sie zum Festlegen von Clientcodepages unter Windows die Option Ländereinstellungen in der Systemsteuerung.To set client code pages on the Windows operating system, use Regional Settings in Control Panel.

Wenn Sie Daten von einem Server auf einen Client verschieben, wird die Serversortierung von älteren Clienttreibern möglicherweise nicht erkannt.When you move data from a server to a client, your server collation might not be recognized by older client drivers. Dies kann passieren, wenn Sie Daten von einem Unicode-Server auf einen Nicht-Unicode-Client verschieben.This can occur when you move data from a Unicode server to a non-Unicode client. Die beste Möglichkeit, dieses Problem zu beheben, besteht in einem Update des Clientbetriebssystems, wobei die zugrunde liegenden Systemsortierungen aktualisiert werden.Your best option might be to upgrade the client operating system so that the underlying system collations are updated. Wenn auf dem Client Datenbankclient-Software installiert ist, sollten Sie ein Serviceupdate der Datenbankclient-Software in Erwägung ziehen.If the client has database client software installed, you might consider applying a service update to the database client software.

Sie können auch versuchen, eine andere Sortierung für die Daten auf dem Server zu verwenden.You can also try to use a different collation for the data on the server. Wählen Sie eine Sortierung aus, die einer Codepage auf dem Client zugeordnet werden kann.Choose a collation that will map to a code page on the client.

Um die verfügbaren UTF-16-Sortierungen in SQL Server 2016SQL Server 2016zu verwenden und das Suchen und Sortieren einiger Unicode-Zeichen zu verbessern, können Sie eine der _SC -Sortierungen mit ergänzenden Zeichen (nur Windows-Sortierungen) auswählen.To use the UTF-16 collations available in SQL Server 2016SQL Server 2016, you can select one of the supplementary characters _SC collations (Windows collations only) to improve searching and sorting of some Unicode characters.

Zum Abwägen der Vor- und Nachteile von Unicode- und Nicht-Unicode-Datentypen müssen Sie das Szenario testen und die Leistungsunterschiede in Ihrer Umgebung messen.To evaluate issues that are related to using Unicode or non-Unicode data types, test your scenario to measure performance differences in your environment. Es ist ratsam, die Sortierung zu standardisieren, die für die Systeme in Ihrem Unternehmen verwendet wird, und so weit wie möglich Unicode-Server und -Clients bereitzustellen.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 vielen Fällen interagiert SQL ServerSQL Server mit anderen Servern oder Clients, und Ihr Unternehmen verwendet möglicherweise mehrere Standards für den Datenzugriff zwischen Anwendungen und Serverinstanzen.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. SQL ServerSQL Server -Clients stellen einen der beiden Haupttypen dar: clients are one of two main types:

  • Unicode-Clients , die OLE DB und Open Database Connectivity (ODBC) Version 3.7 oder höher verwenden.Unicode clients that use OLE DB and Open Database Connectivity (ODBC) version 3.7 or a later version.

  • Nicht-Unicode-Clients , die DB Library und ODBC Version 3.6 oder früher verwenden.Non-Unicode clients that use DB-Library and ODBC version 3.6 or an earlier version.

    Die folgende Tabelle enthält Informationen zur Verwendung mehrsprachiger Daten mit verschiedenen Kombinationen von Unicode- und Nicht-Unicode-Servern.The following table provides information about using multilingual data with various combinations of Unicode and non-Unicode servers.

ServerServer ClientClient Vorteile oder BeschränkungenBenefits or Limitations
UnicodeUnicode UnicodeUnicode Da Unicode-Daten im gesamten System verwendet werden, verfügt dieses Szenario über die beste Systemleistung und den besten Schutz vor Beschädigung der abgerufenen Daten.Because Unicode data will be used throughout the system, this scenario provides the best performance and protection from corruption of retrieved data. Dies ist der Fall bei ActiveX Data Objects (ADO), OLE DB und ODBC Version 3.7 oder höher.This is the situation with ActiveX Data Objects (ADO), OLE DB, and ODBC version 3.7 or a later version.
UnicodeUnicode Nicht-UnicodeNon-Unicode In diesem Szenario sind Einschränkungen oder Fehler beim Verschieben von Daten auf einen Clientcomputer möglich. Dies gilt besonders für Verbindungen zwischen einem Server, auf dem ein neueres Betriebssystem ausgeführt wird, und einem Client, auf dem eine ältere Version von SQL ServerSQL Serveroder ein älteres Betriebssystem installiert ist.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. Die Unicode-Daten auf dem Server versuchen, eine Zuordnung zu einer entsprechenden Codeseite auf dem Nicht-Unicode-Client zu erstellen, um die Daten zu konvertieren.Unicode data on the server will try to map to a corresponding code page on the non-Unicode client to convert the data.
Nicht-UnicodeNon-Unicode UnicodeUnicode Dies ist keine günstige Konfiguration bei der Verwendung mehrsprachiger DatenThis is not an ideal configuration for using multilingual data. Sie sind nicht in der Lage, Unicode-Daten auf den Nicht-Unicode-Server zu schreiben.You cannot write Unicode data to the non-Unicode server. Es ist wahrscheinlich, dass Probleme auftreten, wenn Daten an Server gesendet werden, die von der Codepage des Servers nicht erfasst werden.Problems are likely to occur when data is sent to servers that are outside the server's code page.
Nicht-UnicodeNon-Unicode Nicht-UnicodeNon-Unicode Dieses Szenario ist bei mehrsprachigen Daten mit zahlreichen Beschränkungen verbunden.This is a very limiting scenario for multilingual data. Sie können nur eine Codepage verwenden.You can use only a single code page.

Supplementary Characters Supplementary Characters

SQL ServerSQL Server stellt Datentypen wie nchar und nvarchar zum Speichern von Unicode-Daten bereit. provides data types such as nchar and nvarchar to store Unicode data. Bei diesen Datentypen wird Text im Format UTF-16codiert.These data types encode text in a format called UTF-16. Das Unicode Consortium hat jedem Zeichen einen eindeutigen Codepunkt zugeordnet, der einem Wert im Bereich 0x0000 bis 0x10FFFF entspricht.The Unicode Consortium allocates each character a unique codepoint, which is a value in the range 0x0000 to 0x10FFFF. Die am häufigsten verwendeten Zeichen weisen Codepunktwerte auf, die im Arbeitsspeicher und auf dem Datenträger in ein 16-Bit-Wort passen. Zeichen mit Codepunktwerten, die größer als 0xFFFF sind, erfordern jedoch zwei aufeinanderfolgende 16-Bit-Wörter.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. Diese Zeichen werden als ergänzende Zeichenbezeichnet, und die beiden aufeinanderfolgenden 16-Bit-Wörter werden als Ersatzpaarebezeichnet.These characters are called supplementary characters, and the two consecutive 16-bit words are called surrogate pairs.

Bei Verwendung ergänzender Zeichen:If you use supplementary characters:

  • Ergänzende Zeichen können bei Sortier- und Vergleichsvorgängen für Sortierungsversionen ab 90 verwendet werden.Supplementary characters can be used in ordering and comparison operations in collation versions 90 or greater.

  • Alle _100-Ebenen-Sortierungen unterstützen die linguistische Sortierung mit ergänzenden Zeichen.All _100 level collations support linguistic sorting with supplementary characters.

  • Ergänzende Zeichen werden für die Verwendung in Metadaten, beispielsweise in Namen von Datenbankobjekten, nicht unterstützt.Supplementary characters are not supported for use in metadata, such as in names of database objects.

  • Für die Datentypen SQL Server 2012SQL Server 2012nchar ,nvarchar und sql_variant kann jetzt eine neue Familie von SC-Sortierungen (Supplementary Characters) verwendet werden, die ineingeführt wurde.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. Beispiel: Latin1_General_100_CI_AS_SC, oder bei Verwenden einer japanischen Sortierung 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.

    Das SC-Flag kann in folgenden Versionen angewendet werden:The SC flag can be applied to:

    • Windows-Sortierungen der Version 90Version 90 Windows collations

    • Windows-Sortierungen der Version 100Version 100 Windows collations

      Das SC-Flag kann nicht auf folgende Versionen angewendet werden:The SC flag cannot be applied to:

    • Nicht versionierte Windows-Sortierungen der Version 80Version 80 non-versioned Windows collations

    • Die binären Sortierungen BIN und BIN2The BIN or BIN2 binary collations

    • Die SQL-SortierungenThe SQL collations

    In der folgenden Tabelle wird das Verhalten einiger Zeichenfolgenfunktionen und Zeichenfolgenoperatoren verglichen, wenn diese ergänzende Zeichen mit und ohne SC-Sortierung verwenden.The following table compares the behavior of some string functions and string operators when they use supplementary characters with and without a SC collation.

Zeichenfolgenfunktion oder OperatorString Function or Operator Mit SC-SortierungWith an SC Collation Ohne SC-SortierungWithout an SC Collation
CHARINDEXCHARINDEX

LENLEN

PATINDEXPATINDEX
Das UTF-16-Ersatzzeichenpaar wird als einzelner Codepunkt betrachtet.The UTF-16 surrogate pair is counted as a single codepoint. Das UTF-16-Ersatzzeichenpaar wird als zwei Codepunkte betrachtet.The UTF-16 surrogate pair is counted as two codepoints.
LEFTLEFT

REPLACEREPLACE

REVERSEREVERSE

RIGHTRIGHT

SUBSTRINGSUBSTRING

STUFFSTUFF
Diese Funktionen behandeln jedes Ersatzzeichenpaar als einzelnen Codepunkt und funktionieren wie erwartet.These functions treat each surrogate pair as a single codepoint and work as expected. Diese Funktionen können Ersatzzeichenpaare möglicherweise aufteilen und zu unerwarteten Ergebnissen führen.These functions may split any surrogate pairs and lead to unexpected results.
NCHARNCHAR Gibt das Zeichen zurück, das dem angegebenen Unicode-Codepunktwert im Bereich 0 zu 0x10FFFF entspricht.Returns the character corresponding to the specified Unicode codepoint value in the range 0 to 0x10FFFF. Wenn der angegebene Wert im Bereich 0 bis 0xFFFF liegt, wird nur ein Zeichen zurückgegeben.If the value specified lies in the range 0 through 0xFFFF, one character is returned. Bei höheren Werten wird das entsprechende Ersatzzeichenpaar zurückgegeben.For higher values, the corresponding surrogate is returned. Ein Wert größer als 0xFFFF gibt anstelle des entsprechenden Ersatzzeichens NULL zurück.A value higher than 0xFFFF returns NULL instead of the corresponding surrogate.
UNICODEUNICODE Gibt einen UTF-16-Codepunkt im Bereich 0 bis 0x10FFFF zurück.Returns a UTF-16 codepoint in the range 0 through 0x10FFFF. Gibt einen UCS-2-Codepunkt im Bereich 0 bis 0xFFFF zurück.Returns a UCS-2 codepoint in the range 0 through 0xFFFF.
Einzelnes zu suchendes ZeichenMatch One Character Wildcard

Platzhalterzeichen - nicht zu suchende(s) ZeichenWildcard - Character(s) Not to Match
Ergänzende Zeichen werden für alle Platzhaltervorgänge unterstützt.Supplementary characters are supported for all wildcard operations. Ergänzende Zeichen werden für diese Platzhaltervorgänge nicht unterstützt.Supplementary characters are not supported for these wildcard operations. Andere Platzhalteroperatoren werden unterstützt.Other wildcard operators are supported.

GB18030 Support GB18030 Support

GB18030 ist ein separater Standard, der in der Volksrepublik China zur Codierung von chinesischen Schriftzeichen verwendet wird.GB18030 is a separate standard used in the People's Republic of China for encoding Chinese characters. In GB18030 können Zeichen 1, 2 oder 4 Bytes lang sein.In GB18030, characters can be 1, 2, or 4 bytes in length. SQL ServerSQL Server bietet Unterstützung für GB18030-codierte Zeichen, indem diese erkannt werden, wenn Sie den Server von einer clientseitigen Anwendung erreichen, und in systemeigene Unicode-Zeichen konvertiert und als solche gespeichert werden. 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. Nach ihrer Speicherung im Server werden diese Zeichen in allen nachfolgenden Operationen als Unicode-Zeichen behandelt.After they are stored in the server, they are treated as Unicode characters in any subsequent operations. Sie können eine beliebige chinesische Sortierung verwenden. Empfohlen wird die aktuelle Version 100.You can use any Chinese collation, preferably the latest 100 version. Alle _100-Ebenen-Sortierungen unterstützen die linguistische Sortierung mit GB18030-Zeichen.All _100 level collations support linguistic sorting with GB18030 characters. Wenn die Daten ergänzende Zeichen (Ersatzpaare) enthalten, können Sie Such- und Sortiervorgänge mithilfe der in SQL Server 2016SQL Server 2016 verfügbaren SC-Sortierungen optimieren.If the data includes supplementary characters (surrogate pairs), you can use the SC collations available in SQL Server 2016SQL Server 2016 to improve searching and sorting.

Complex Script Support Complex Script Support

SQL ServerSQL Server kann das Eingeben, Speichern, Ändern und Anzeigen komplexer Skripts unterstützen. can support inputting, storing, changing, and displaying complex scripts. Zu komplexen Skripts gehören Folgende:Complex scripts include the following:

  • Skripts, die sowohl die Kombination von Text von rechts nach links und Text von links nach rechts enthalten, als auch die Kombination von arabischem und englischem Text.Scripts that include the combination of both right-to-left and left-to-right text, such as a combination of Arabic and English text.

  • Skripts, deren Zeichen die Form abhängig von ihrer Position ändern, oder abhängig davon, ob sie mit anderen Zeichen kombiniert werden, wie beispielsweise arabische, indische und thailändische Zeichen.Scripts whose characters change shape depending on their position, or when combined with other characters, such as Arabic, Indic, and Thai characters.

  • Sprachen, wie beispielsweise Thailändisch, die ein internes Wörterbuch zum Erkennen von Wörtern erfordern, da keine Abstände zwischen den Wörtern vorhanden sind.Languages such as Thai that require internal dictionaries to recognize words because there are no breaks between them.

    Datenbankanwendungen, die mit SQL ServerSQL Server interagieren, müssen über Steuerelemente verfügen, die komplexe Skripts unterstützen.Database applications that interact with SQL ServerSQL Server must use controls that support complex scripts. Standardmäßige Windows-Formularsteuerelemente, die in verwaltetem Code erstellt werden, sind für komplexe Skripts aktiviert.Standard Windows form controls that are created in managed code are complex script-enabled.

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

Ab SQL Server 2017SQL Server 2017werden zwei neue japanische Sortierungsfamilien unterstützt, bei denen es sich um Permutationen verschiedener Optionen (_CS, _AS, _KS, _WS, _VSS usw.) handelt.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).

Um diese Sortierungen aufzulisten, können Sie das SQL Server-Datenbankmodul abfragen: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%'

Diese Sortierungen werden in Indizes des Datenbankmoduls, in für den Arbeitsspeicher optimierten Tabellen, in Columnstore-Indizes und in nativ kompilierten Modulen unterstützt.These collations are supported in Database Engine indexes, memory-optimized tables, columnstore indexes, and natively compiled modules.

TaskTask ThemaTopic
Beschreibt, wie die Sortierung der Instanz von SQL Server festgelegt oder geändert wird.Describes how to set or change the collation of the instance of SQL Server. Festlegen oder Ändern der ServersortierungSet or Change the Server Collation
Beschreibt, wie die Sortierung einer Benutzerdatenbank festgelegt oder geändert wird.Describes how to set or change the collation of a user database. Festlegen oder Ändern der DatenbanksortierungSet or Change the Database Collation
Beschreibt, wie die Sortierung einer Spalte in der Datenbank festgelegt oder geändert wird.Describes how to set or change the collation of a column in the database. Festlegen oder Ändern der SpaltensortierungSet or Change the Column Collation
Beschreibt, wie Sortierungsinformationen auf Server-, Datenbank- oder Spaltenebene zurückgegeben werden.Describes how to return collation information at the server, database, or column level. Anzeigen von SortierungsinformationenView Collation Information
Beschreibt, wie Transact-SQL-Anweisungen geschrieben werden, die die Übertragung von einer Sprache in eine andere verbessern, oder wie mehrere Sprachen einfacher unterstützt werden.Describes how to write Transact-SQL statements that will make them more portable from one language to another, or support multiple languages more easily. Schreiben internationaler Transact-SQL-AnweisungenWrite International Transact-SQL Statements
Beschreibt, wie die Sprache von Fehlermeldungen und die bevorzugte Verwendungs- und Anzeigeweise von Datums-, Zeit-, und Währungsdaten geändert werden.Describes how to change the language of error messages and preferences for how date, time, and currency data are used and displayed. Festlegen einer SitzungsspracheSet a Session Language

Bewährte Vorgehensweisen zur Sortierungsänderung bei SQL ServerSQL Server Best Practices Collation Change

"Bewährte Vorgehensweise zur Unicode-Migration bei SQL Server""SQL Server Best Practices Migration to Unicode"

Website des Unicode ConsortiumUnicode Consortium Web site

Weitere Informationen enthält auch dieSee Also

Contained Database Collations Contained Database Collations
Auswählen einer Sprache beim Erstellen eines Volltextindex Choose a Language When Creating a Full-Text Index
sys.fn_helpcollations (Transact-SQL) sys.fn_helpcollations (Transact-SQL)