Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Zeichendaten, z. B. ANSI-Zeichenvariablen, die mit SQL_C_CHAR oder in SQL Server gespeicherten Daten mithilfe der Datentypen Char, Varchar oder Text deklariert werden, können nur eine begrenzte Anzahl von Zeichen darstellen. Zeichendaten, die mit einem Byte pro Zeichen gespeichert werden, können nur 256 Zeichen darstellen. Die in SQL_C_CHAR Variablen gespeicherten Werte werden mithilfe der ANSI-Codepage (ACP) des Clientcomputers 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, das den Wert enthält, 0xA5 als Zeichen interpretiert?? auf einem Computer mit Codepage 437 und wird als Yen-Zeichen (??) 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, sodass alle Unicode-Zeichen von allen Computern gleich 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 können auf den Client- und Servercomputern unterschiedlich interpretiert werden, wenn die Daten erweiterte Zeichen enthalten und die beiden Computer unterschiedliche Codeseiten haben. Die Daten werden gleich interpretiert, wenn beide Computer über dieselbe Codepage verfügen.
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 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 Codeseiten sein, die auf dem Clientcomputer installiert sind.
Durch das Erstellen der Zeichenkonvertierungen über Unicode wird die ordnungsgemäße Konvertierung aller Zeichen sichergestellt, die auf beiden Codeseiten vorhanden sind. Wenn ein Zeichen in einer Codeseite, aber nicht auf einer anderen Seite vorhanden ist, kann das Zeichen nicht auf der Zielcodeseite dargestellt werden. Codepage 1252 hat z. B. das eingetragene Markensymbol (??), während code page 437 nicht.
Die Einstellung "AutoTranslate" hat keine Auswirkung auf diese Konvertierungen:
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 von Zeichen zu Unicode verschoben werden.
Siehe auch
Verarbeiten von Ergebnissen (ODBC)
Sortierung und Unicode-Unterstützung