NTEXT vs NVARCHAR(MAX) + SQL 2005

19/10/2009 - 06:56 por Don Quijote de Nicaragua | Informe spam
Hola estoy intentado hacer una consulta de UNION y una de las uniones
tengo una subconsulta cuando intento ejecutarla me envia el siguiente
mensaje de error:

The ntext data type cannot be selected as DISTINCT because it is not
comparable.

Investigue y mire que era el tipo de datos y los cambie todos de
"ntext" a "nvarchar(max) y funciono correctamente, mi pregunta es,
saben por que cuando uso ntext, me daba el error anterior, que
desventaja tendria al usar el campo tipo nvarchar(max).
Gracias de antemano por su tiempo.
Don Quijo de Nicaragua.

Preguntas similare

Leer las respuestas

#1 Carlos Sacristan
19/10/2009 - 09:54 | Informe spam
Ninguna desventaja, más bien al contrario. De hecho, los tipos de datos
TEXT, NTEXT e IMAGE están marcados para ser eliminados en una futura
versión, así que cuanto antes empieces a usar VARCHAR(MAX), NVARCHAR(MAX) Y
VARBINARY(MAX) en su lugar, mucho mejor

"Caminar sobre el agua y desarrollar software a partir de unas
especificaciones es fácil, si ambas están congeladas."
Edward V. Berard, ingeniero informático


"Don Quijote de Nicaragua" wrote in message
news:
Hola estoy intentado hacer una consulta de UNION y una de las uniones
tengo una subconsulta cuando intento ejecutarla me envia el siguiente
mensaje de error:

The ntext data type cannot be selected as DISTINCT because it is not
comparable.

Investigue y mire que era el tipo de datos y los cambie todos de
"ntext" a "nvarchar(max) y funciono correctamente, mi pregunta es,
saben por que cuando uso ntext, me daba el error anterior, que
desventaja tendria al usar el campo tipo nvarchar(max).
Gracias de antemano por su tiempo.
Don Quijo de Nicaragua.
Respuesta Responder a este mensaje
#2 Aguardientico
19/10/2009 - 17:45 | Informe spam
Hola Don Quijote:

El problema que te daba se debe a la arquitectura de Sql Server, resulta que
Sql Server guarda los datos de tus tablas en unas estructuras llamadas
páginas cada una de ellas ocupa un máximo de 8000 Bytes es decir que el
tamaño máximo de una fila es de 8000 Bytes, para poder meter datos más
grandes de esos 8000 bytes lo que hicieron fue poner punteros a otras
ubicaciones de la base y esos punteros son los tipos de datos binarios
grandes (blob por sus siglas en ingles) estos punteros eliminan la
restriccion de los 8000 bytes, como estos datos se guardan como binarios
entonces Sql Server los maneja de diferente forma que al resto de tipos de
datos., es por eso, que no puedes hacer las comparaciones con DISTINCT.

El SqlServer 2005 la gente de microsoft lo que hizo fue crear nuevos tipos
de datos como el varchar(max) lo cual lo que hace es generar un puntero a
otras ubicaciones de la base pero guardandolo como el tipo de dato original,
por lo cual se comporta como un varchar normal pero sobrepasa el límite de
8000 bytes por página de la arquitectura de sql server.

Las ventajas de usar nvarchar(max) es que no tienes que hacer diferentes
implementaciones de tus transact-sql para hacer comparaciones y demas
operaciones.

Si mal no estoy de hecho ntext está deprecado y lo van a eliminar en futuras
versiones de Sql Server.

Atte.
Gustavo Gonzalez

"Don Quijote de Nicaragua" wrote in message
news:
Hola estoy intentado hacer una consulta de UNION y una de las uniones
tengo una subconsulta cuando intento ejecutarla me envia el siguiente
mensaje de error:

The ntext data type cannot be selected as DISTINCT because it is not
comparable.

Investigue y mire que era el tipo de datos y los cambie todos de
"ntext" a "nvarchar(max) y funciono correctamente, mi pregunta es,
saben por que cuando uso ntext, me daba el error anterior, que
desventaja tendria al usar el campo tipo nvarchar(max).
Gracias de antemano por su tiempo.
Don Quijo de Nicaragua.

__________ Information from ESET NOD32 Antivirus, version of virus
signature database 4522 (20091019) __________

The message was checked by ESET NOD32 Antivirus.

http://www.eset.com






__________ Information from ESET NOD32 Antivirus, version of virus signature database 4522 (20091019) __________

The message was checked by ESET NOD32 Antivirus.

http://www.eset.com
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida