Datentypverwendung

Der SQL Server Native Client-ODBC-Treiber und SQL Server setzen die Verwendung folgender Datentypen voraus.

Datentyp

Einschränkung

Datumsliterale

Datumsliterale, die in einer SQL_TYPE_TIMESTAMP-Spalte gespeichert sind (SQL Server-Datentypen datetime oder smalldatetime), weisen einen Zeitwert von 12:00:00.000 A.M auf.

money und smallmoney

Nur die Ganzzahlen der Datentypen money und smallmoney sind signifikant. Wenn der Dezimalwert der money-SQL-Daten während der Datentypkonvertierung abgeschnitten wird, gibt der SQL Server Native Client-ODBC-Treiber eine Warnung aber keinen Fehler aus.

SQL_BINARY (NULL zulassen)

Wenn eine Verbindung mit einer Instanz von SQL Server Version 6.0 oder niedriger besteht und eine SQL_BINARY-Spalte NULL-Werte zulässt, werden die in der Datenquelle gespeicherten Daten nicht mit NULL-Werten aufgefüllt. Wenn Daten aus einer dieser Spalten abgerufen werden, füllt der SQL Server Native Client-ODBC-Treiber die Daten mit NULL-Werten auf der rechten Seite. Daten, die in von SQL Server ausgeführten Vorgängen wie Verkettungen erstellt werden, werden jedoch nicht verkettet.

Auch wenn Daten in einer solchen Spalte in einer Instanz von SQL Server 6.0 oder niedriger platziert werden, schneidet SQL Server die Daten rechts ab, falls sie nicht in die Spalte passen.

HinweisHinweis
Der SQL Server Native Client-ODBC-Treiber unterstützt das Herstellen einer Verbindung mit der SQL Server-Version 6.5 und niedriger.

SQL_CHAR (Kürzung)

Wenn während einer Verbindung mit einer Instanz von SQL Server 6.0 oder niedriger Daten in eine SQL_CHAR-Spalte platziert werden, schneidet SQL Server die Daten auf der rechten Seite, ohne dass eine Warnung ausgegeben wird, dass die Daten abgeschnitten werden.

HinweisHinweis
Der SQL Server Native Client-ODBC-Treiber unterstützt das Herstellen einer Verbindung mit der SQL Server-Version 6.5 und niedriger.

SQL_CHAR (NULL zulassen)

Wenn eine Verbindung mit einer Instanz von SQL Server Version 6.0 oder niedriger besteht und eine SQL_CHAR-Spalte NULL-Werte zulässt, werden die in der Datenquelle gespeicherten Daten nicht mit NULL-Werten aufgefüllt. Wenn Daten aus einer dieser Spalten abgerufen werden, füllt der SQL Server Native Client-ODBC-Treiber die Daten mit NULL-Werten auf der rechten Seite. Daten, die in von SQL Server ausgeführten Vorgängen wie Verkettungen erstellt werden, werden jedoch nicht mit NULL-Werten aufgefüllt.

HinweisHinweis
Der SQL Server Native Client-ODBC-Treiber unterstützt das Herstellen einer Verbindung mit SQL Server Version 6.5 und niedriger.

SQL_LONGVARBINARY, SQL_LONGVARCHAR, SQL_WLONGVARCHAR

Aktualisierungen von Spalten mit den Datentypen SQL_LONGVARBINARY, SQL_LONGVARCHAR oder SQL_WLONGVARCHAR (unter Verwendung einer WHERE-Klausel), die mehrere Zeilen betreffen, werden bei Verbindungen mit Instanzen von SQL Server 6.x und höher voll unterstützt. Bei Verbindungen mit SQL Server 4.2x wird ein S1000-Fehler "Partielle Einfügung/Aktualisierung. Die Einfügung/Aktualisierung von Text- oder Bildspalte(n) war nicht erfolgreich." ausgegeben, wenn die Aktualisierung mehr als eine Zeile betrifft.

HinweisHinweis
Der SQL Server Native Client-ODBC-Treiber unterstützt das Herstellen einer Verbindung mit SQL Server Version 6.5 und niedriger.

Zeichenfolge-Funktionsparameter

string_exp-Parameter für die Zeichenfolgenfunktionen müssen vom Datentyp SQL_CHAR oder SQL_VARCHAR sein. SQL_LONG_VARCHAR-Datentypen werden in Zeichenfolgenfunktionen nicht unterstützt. Der count-Parameter muss weniger oder gleich 8000 sein, da die Datentypen SQL_CHAR und SQL_VARCHAR eine Längenbeschränkung von maximal 8000 Zeichen besitzen.

Zeitliterale

Zeitliterale, die in einer SQL_TYPE_TIMESTAMP-Spalte gespeichert sind (SQL Server-Datentypen datetime oder smalldatetime), weisen den Datumswert 1. Januar 1900 auf.

timestamp

Nur ein NULL-Wert kann manuell in eine timestamp-Spalte eingefügt werden. Da timestamp-Spalten jedoch automatisch von SQL Server aktualisiert werden, wird ein NULL-Wert überschrieben.

tinyint

Der SQL Server tinyint-Datentyp ist nicht signiert. Eine tinyint -Spalte ist standardmäßig an eine Variable des Datentyps SQL_C_UTINYINT gebunden.

Aliasdatentypen

Bei einer Verbindung mit einer Instanz von SQL Server 4.2x fügt der ODBC-Treiber einer Spalte NULL hinzu, wenn die Spaltendefinition nicht explizit angibt, dass NULL für die Spalte zulässig ist. Deshalb wird der NULL-Zulässigkeitsstatus, der in der Definition eines Aliasdatentyps gespeichert ist, ignoriert.

Bei einer Verbindung mit einer Instanz von SQL Server 4.2x werden Spalten mit einem Aliasdatentyp vom Basisdatentyp char oder binary, für die NULL-Werte als zulässig deklariert sind, als Daten vom Typ varchar oder varbinary erstellt. SQLColAttribute, SQLColumns und SQLDescribeCol geben SQL_VARCHAR oder SQL_VARBINARY als Datentyp für diese Spalten zurück. Daten, die von diesen Spalten abgerufen werden, werden nicht aufgefüllt.

HinweisHinweis
Der SQL Server Native Client-ODBC-Treiber unterstützt das Herstellen einer Verbindung mit SQL Server Version 6.5 und niedriger.

LONG-Datentypen

Data-at-Execution-Parameter sind für die Datentypen SQL_LONGVARBINARY und SQL_LONGVARCHAR eingeschränkt.

Typen für hohe Werte

Der SQL Server Native Client-ODBC-Treiber macht die Dateitypen varchar(max), varbinary(max) und nvarchar(max) jeweils als SQL_VARCHAR, SQL_VARBINARY und SQL_WVARCHAR in APIs verfügbar, die ODBC-SQL-Datentypen akzeptieren bzw. zurückgeben.

Benutzerdefinierter Typ (User-defined type, UDT)

UDT-Spalten werden als SQL_SS_UDT zugeordnet. Wenn eine UDT-Spalte unter Verwendung der ToString()- oder der ToXMLString()-Methode des UDT oder über die CAST/CONVERT-Funktionen explizit einem anderen Typ in der SQL-Anweisung zugeordnet wird, gibt der Typ der Spalte im Resultset den tatsächlichen Typ wieder, in den die Spalte konvertiert wurde.

Der SQL Server Native Client-ODBC-Treiber kann nur im Binärformat an ein UDT gebunden werden. SQL Server unterstützt nur die Konvertierung zwischen den Datentypen SQL_SS_UDT und SQL_C_BINARY.

XML

SQL Server konvertiert XML automatisch zu Unicode-Text. Der XML-Typ wird als SQL_SS_XML zugeordnet.