Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

NTEXT vs NVARCHAR(MAX) + SQL 2005

116 views
Skip to first unread message

Don Quijote de Nicaragua

unread,
Oct 19, 2009, 12:56:58 AM10/19/09
to
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.

Carlos Sacristan

unread,
Oct 19, 2009, 3:54:15 AM10/19/09
to
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" <elde...@gmail.com> wrote in message
news:3655e23b-84da-464d...@d5g2000yqm.googlegroups.com...

Aguardientico

unread,
Oct 19, 2009, 11:45:32 AM10/19/09
to
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" <elde...@gmail.com> wrote in message
news:3655e23b-84da-464d...@d5g2000yqm.googlegroups.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
>
>
>

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

The message was checked by ESET NOD32 Antivirus.

http://www.eset.com

0 new messages