2010-02-26 19 views
5

Comenzando en SQL 2005, VARCHAR (MAX) ya no está limitado a 8000 bytes, sino que puede ir hasta 2 GB usando páginas de "desbordamiento".¿Puedo establecer un tamaño VARCHAR mayor que 8k pero menor que MAX?

¿Pero y si quiero limitar esta columna para decir, 10k bytes? Parece que me sale un error si trato de poner algo en el parámetro de tamaño por encima de 8000. Lo cual es extraño porque MAX es lo mismo que pedir un límite de 2 GB. Parece que es una especie de "todo o nada" cuando se trata del tamaño máximo.

¿Hay alguna forma de evitar esto?

Respuesta

3

No, no puede hacer esto [directamente]. Es 0-8000 o MAX.

Intento de utilizar dicen 10,000 dará:

The size (10000) given to the type 'varchar' exceeds the maximum allowed for any data type (8000). 

Sin embargo, puede utilizar una columna VARCHAR (MAX) con un cheque contraint. Algo como:

CHECK (DATALENGTH([myBigColumn]) <= 10000) 
8

No, no puedes. ya sea varchar (< = 8000) o varchar (MAX), nada en el medio.

Puede hacer esto sin embargo:

CREATE TABLE [dbo].[VarChar10000] ([VarChar10000] VARCHAR(MAX)) 
GO 

ALTER TABLE [dbo].[VarChar10000] 
    ADD CONSTRAINT [MaxLength10000] 
    CHECK (DATALENGTH([VarChar10000]) <= 10000) 
GO 

Comprobar here.

Cuestiones relacionadas