Automatische Übersetzung der Zeichendaten
Gilt für: SQL Server Azure SQL-Datenbank Azure SQL Managed Instance Azure Synapse Analytics Analytics Platform System (PDW)
Zeichendaten, z. B. ANSI-Zeichenvariablen, die mit SQL_C_CHAR oder in SQL Server gespeicherten Daten mithilfe der Datentypen Char, Varchar oder Text deklariert wurden, 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 mithilfe von Char-, Varchar- oder Textdatentypen 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, gibt es keine Probleme beim Interpretieren der werte, die in SQL_C_CHAR-, Char-, Varchar- oder Textobjekten gespeichert sind. Wenn der Server und der Client unterschiedliche ACPs haben, werden SQL_C_CHAR Daten vom Client möglicherweise als ein anderes Zeichen auf dem Server interpretiert, wenn sie in Char-, Varchar- oder Textspalten, Variablen oder Parametern verwendet wird. Beispielsweise wird ein Zeichenbyte mit dem Wert 0xA5 als das Zeichen Ñ auf einem Computer mit Codepage 437 interpretiert und als Yenzeichen (%) auf einem Computer interpretiert, auf dem 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 Codeseiten 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 mit ODBC-Administrator festgelegt werden.
Wenn AutoTranslate auf "nein" festgelegt ist, werden keine Konvertierungen für Daten ausgeführt, die zwischen SQL_C_CHAR Variablen auf dem Client verschoben werden, und Textspalten, Varchar- oder Textspalten , Variablen oder Parameter in einer SQL Server-Datenbank. 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 ODBC-Treiber von SQL Server Native Client Unicode, um Daten zu konvertieren, die zwischen SQL_C_CHAR Variablen auf dem Client verschoben werden, und Zeichenspalten, Varchar- oder Textspalten , Variablen oder Parameter in einer SQL Server-Datenbank:
Wenn Daten von einer SQL_C_CHAR Variablen auf dem Client an eine Zeichen-, Varchar- oder Textspalte, Variable oder Parameter in einer SQL Server-Datenbank gesendet werden, konvertiert der ODBC-Treiber zunächst von SQL_C_CHAR in Unicode mithilfe des ACP des Clients, dann von Unicode zurück in Zeichen mithilfe des ACP des Servers.
Wenn Daten von einer Zeichen-, Varchar- oder Textspalte, Variablen oder Parameter in einer SQL Server-Datenbank an eine SQL_C_CHAR Variable auf dem Client gesendet werden, konvertiert der ODBC-Treiber von SQL Server Native Client zunächst mithilfe des ACP des Servers 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 Codeseiten sein, die auf dem Clientcomputer installiert sind.
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