Compartir vía


Uso de tipos de datos

Se aplica a: SQL Server Azure SQL Database Azure SQL Instancia administrada Azure Synapse Analytics Analytics Platform System (PDW)

El controlador ODBC de SQL Server Native Client y SQL Server imponen el siguiente uso de tipos de datos.

Tipo de datos Limitación
Literales de fecha Los literales de fecha, cuando se almacenan en una columna de SQL_TYPE_TIMESTAMP (tipos de datos de SQL Server de datetime o smalldatetime), tienen un valor de hora de 12:00:00.000 A.M.
money y smallmoney Solo las partes enteras de los tipos de datos money y smallmoney son significativas. Si la parte decimal de los datos money de SQL se trunca durante la conversión de tipos de datos, el controlador ODBC de SQL Server Native Client devuelve una advertencia, no un error.
SQL_BINARY (admite valores NULL) Cuando se conecta a una instancia de SQL Server versión 6.0 y versiones anteriores, si una columna de SQL_BINARY admite valores NULL, los datos almacenados en el origen de datos no se rellenan con ceros. Cuando se recuperan datos de dicha columna, el controlador ODBC de SQL Server Native Client lo rellena con ceros a la derecha. Sin embargo, los datos creados en las operaciones realizadas por SQL Server, como la concatenación, no tienen dicho relleno.

Además, cuando los datos se colocan en dicha columna en una instancia de SQL Server 6.0 o versiones anteriores, SQL Server trunca los datos a la derecha si es demasiado largo para caber en la columna.

Nota: El controlador ODBC de SQL Server Native Client admite la conexión a SQL Server 6.5 y versiones anteriores.
SQL_CHAR (truncamiento) Cuando se conecta a una instancia de SQL Server 6.0 y versiones anteriores, y los datos se colocan en una columna de SQL_CHAR, SQL Server lo trunca a la derecha sin advertencia si los datos son demasiado largos para caber en la columna.

Nota: El controlador ODBC de SQL Server Native Client admite la conexión a SQL Server 6.5 y versiones anteriores.
SQL_CHAR (admite valores NULL) Cuando se conecta a una instancia de SQL Server 6.0 y versiones anteriores, si una columna SQL_CHAR admite valores NULL, los datos almacenados en el origen de datos no se rellenan con espacios en blanco. Cuando se recuperan datos de dicha columna, el controlador ODBC de SQL Server Native Client lo rellena con espacios en blanco a la derecha. Sin embargo, los datos creados en las operaciones realizadas por SQL Server, como la concatenación, no tienen dicho relleno.

Nota: El controlador ODBC de SQL Server Native Client admite la conexión a SQL Server 6.5 y versiones anteriores.
SQL_LONGVARBINARY, SQL_LONGVARCHAR, SQL_WLONGVARCHAR Las actualizaciones de columnas con SQL_LONGVARBINARY, SQL_LONGVARCHAR o tipos de datos SQL_WLONGVARCHAR (mediante una cláusula WHERE) que afectan a varias filas se admiten completamente cuando se conectan a una instancia de SQL Server 6.x y versiones posteriores. Cuando se conecta a una instancia de SQL Server 4.2x, se produce un error S1000, "Inserción o actualización parciales. No se realizó correctamente la inserción o actualización de columnas de texto o de imagen" si la actualización afecta a más de una fila.

Nota: El controlador ODBC de SQL Server Native Client admite la conexión a SQL Server 6.5 y versiones anteriores.
Parámetros de función de cadena string_exp parámetros de las funciones de cadena deben ser de tipo de datos SQL_CHAR o SQL_VARCHAR. Los tipos de datos SQL_LONG_VARCHAR no se admiten en las funciones de cadena. El parámetro count debe ser menor o igual que 8000 porque los tipos de datos SQL_CHAR y SQL_VARCHAR están limitados a una longitud máxima de 8000 caracteres.
Literales de hora Los literales de hora, cuando se almacenan en una columna de SQL_TIMESTAMP (tipos de datos de SQL Server de datetime o smalldatetime), tienen un valor de fecha del 1 de enero de 1900.
timestamp Solo se puede insertar manualmente un valor NULL en una columna de marca de tiempo. Sin embargo, dado que SQL Server actualiza automáticamente las columnas de marcade tiempo, se sobrescribe un valor NULL.
tinyint El tipo de datos tinyint de SQL Server no está firmado. Una columna tinyint está enlazada a una variable de tipo de datos SQL_C_UTINYINT de forma predeterminada.
Tipos de datos de alias Cuando se conecta a una instancia de SQL Server 4.2x, el controlador ODBC agrega NULL a una definición de columna que no declara explícitamente la nulabilidad de una columna. Por tanto, la nulabilidad almacenada en la definición de un tipo de datos de alias se pasa por alto.

Cuando se conecta a una instancia de SQL Server 4.2x, las columnas con un tipo de datos de alias que tiene un tipo de datos base de char o binary y para las que no se declara nulabilidad se crean como tipo de datos varchar o varbinary. SQLColAttribute, SQLColumns y SQLDescribeCol devuelven SQL_VARCHAR o SQL_VARBINARY como tipo de datos para estas columnas. Los datos que se recuperan de estas columnas no se rellenan.

Nota: El controlador ODBC de SQL Server Native Client admite la conexión a SQL Server 6.5 y versiones anteriores.
Tipos de datos LONG los parámetros data-at-execution están restringidos para los tipos de datos SQL_LONGVARBINARY y SQL_LONGVARCHAR.
Tipos de valores grandes El controlador ODBC de SQL Server Native Client expondrá los tipos varchar(max),varbinary(max)y nvarchar(max) como SQL_VARCHAR, SQL_VARBINARY y SQL_WVARCHAR (respectivamente) en las API que aceptan o devuelven tipos de datos SQL ODBC.
Tipo definido por el usuario (UDT) Las columnas UDT se asignan como SQL_SS_UDT. Si una columna UDT se asigna explícitamente a otro tipo en la instrucción SQL utilizando los métodos ToXMLString () o ToString () del UDT o a través de funciones CAST/CONVERT, el tipo de la columna en el conjunto de resultados reflejará el tipo real en el que se convirtió la columna.

El controlador ODBC de SQL Server Native Client solo puede enlazarse a una columna UDT como binaria. SQL Server solo admite la conversión entre los tipos de datos SQL_SS_UDT y SQL_C_BINARY.
XML SQL Server convertirá automáticamente XML en texto Unicode. El tipo XML se asigna como SQL_SS_XML.

Consulte también

Procesar resultados (ODBC)