Share via


Automatische Übersetzung der Zeichendaten

Gilt für:SQL ServerAzure SQL-DatenbankAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)

Zeichendaten, z. B. ANSI-Zeichenvariablen, die mit SQL_C_CHAR deklariert werden, oder Daten, die in SQL Server mit den Datentypen char, varchar oder text gespeichert werden, können nur eine begrenzte Anzahl von Zeichen darstellen. Mit einem Byte pro Zeichen gespeicherte Zeichendaten können nur 256 Zeichen darstellen. Die in SQL_C_CHAR-Variablen gespeicherten Werte werden mithilfe der ANSI-Codepage (ACP) auf dem Clientcomputer interpretiert. Die werte, die mit den Datentypen char, varchar oder text auf dem Server gespeichert werden, werden mithilfe des ACP des Servers ausgewertet.

Wenn sowohl der Server als auch der Client über denselben ACP verfügen, haben sie keine Probleme bei der Interpretation der Werte, die in SQL_C_CHAR-, char-, varchar- oder Textobjekten gespeichert sind. Wenn der Server und der Client über unterschiedliche ACPs verfügen, können SQL_C_CHAR Daten vom Client als anderes Zeichen auf dem Server interpretiert werden, wenn sie in char-, varchar- oder Textspalten , Variablen oder Parametern verwendet werden. Beispielsweise wird ein Zeichenbyte, das den Wert 0xA5 enthält, auf einem Computer mit der Codepage 437 als Zeichen Ñ interpretiert und als Yenzeichen (¥) auf einem Computer interpretiert, auf dem die Codepage 1252 ausgeführt wird.

Unicode-Daten werden mit zwei Bytes pro Zeichen gespeichert. Alle erweiterten Zeichen werden von der Unicode-Spezifikation abgedeckt, weshalb alle Unicode-Zeichen von allen Computern einheitlich interpretiert werden.

Das AutoTranslate-Feature des SQL Server Native Client ODBC-Treibers versucht, die Probleme beim Verschieben von Zeichendaten zwischen einem Client und einem Server mit unterschiedlichen Codepages zu minimieren. AutoTranslate kann in der Verbindungszeichenfolge von SQLDriverConnect, in der Konfigurationszeichenfolge von SQLConfigDataSource oder beim Konfigurieren von Datenquellen für den SQL Server Native Client ODBC-Treiber mithilfe des ODBC-Administrators festgelegt werden.

Wenn AutoTranslate auf "nein" festgelegt ist, werden keine Konvertierungen für Daten durchgeführt, die zwischen SQL_C_CHAR Variablen auf dem Client und char, varchar oder Textspalten, Variablen oder Parametern in einer SQL Server Datenbank verschoben werden. Die Bitmuster werden auf dem Client- und dem Servercomputer möglicherweise unterschiedlich interpretiert, wenn die Daten erweiterte Zeichen enthalten und die beiden Computer unterschiedliche Codepages verwenden. Die Daten werden einheitlich interpretiert, wenn beide Computer die gleiche Codepage verwenden.

Wenn AutoTranslate auf "ja" festgelegt ist, verwendet der SQL Server Native Client ODBC-Treiber Unicode, um Daten zu konvertieren, die zwischen SQL_C_CHAR Variablen auf dem Client und char, varchar oder Textspalten, Variablen oder Parametern in einer SQL Server Datenbank verschoben werden:

  • Wenn Daten von einer SQL_C_CHAR Variablen auf dem Client an eine char-, varchar- oder textspalte, variable oder -parameter in einer SQL Server-Datenbank gesendet werden, konvertiert der ODBC-Treiber zunächst mithilfe des ACP des Clients von SQL_C_CHAR in Unicode, dann von Unicode zurück in zeichen unter Verwendung des ACP des Servers.

  • Wenn Daten von einer Char-, Varchar- oder Textspalte, -Variable oder einem -Parameter in einer SQL Server-Datenbank an eine SQL_C_CHAR Variable auf dem Client gesendet werden, konvertiert der SQL Server Native Client ODBC-Treiber zunächst mithilfe des ACP des Servers von Zeichen in Unicode, dann von Unicode zurück in SQL_C_CHAR mit dem ACP des Clients.

Da alle diese Konvertierungen vom SQL Server Native Client ODBC-Treiber ausgeführt werden, der auf dem Client ausgeführt wird, muss der Server ACP eine der Auf dem Clientcomputer installierten Codepages sein.

Indem die Zeichenkonvertierung über Unicode durchgeführt wird, ist sichergestellt, dass alle Zeichen, die auf beiden Codepages enthalten sind, korrekt konvertiert werden. Wenn ein Zeichen jedoch nur auf einer der beiden Codepages aufgeführt ist, kann es auf der Zielcodepage nicht dargestellt werden. Zum Beispiel umfasst die Codepage 1252 das Symbol für eingetragene Marken (®), während das Symbol auf der Codepage 437 nicht enthalten ist.

Die AutoTranslate-Einstellung wirkt sich auf die folgenden Konvertierungen nicht aus:

  • Verschieben von Daten zwischen Zeichen SQL_C_CHAR Clientvariablen und Unicode nchar-, nvarchar- oder ntext-Spalten, Variablen oder Parametern in SQL Server Datenbanken.

  • Verschieben von Daten zwischen Unicode SQL_C_WCHAR Clientvariablen und Zeichenzeichen, Varchar oder Textspalten, Variablen oder Parametern in SQL Server Datenbanken.

Daten müssen immer konvertiert werden, wenn sie vom Zeichenformat in Unicode übertragen werden.

Weitere Informationen

Verarbeiten von Ergebnissen (ODBC)
Collation and Unicode Support