2010-02-26 13 views
5

SQL 2005'ten başlayarak, VARCHAR (MAX) artık 8000 bayt ile sınırlı değil, bunun yerine "taşma" sayfalarını kullanarak 2 GB'a kadar çıkabiliyor.VARCHAR boyutunu 8k'dan büyük, ancak MAX'tan küçük yapabilir miyim?

Peki ya bu sütunu 10k bayt olarak sınırlamak istersem? 8000'in üzerinde boyut parametresinde herhangi bir şey koymaya çalışırsam bir hata alıyorum. Tuhaf olanı çünkü MAX 2GB'lik bir limit istemekle aynıdır. Max boyutuna geldiğinde bir tür "hepsi ya da hiçbir şey" gibi görünüyor.

Bunun herhangi bir yolu var mı?

cevap

3

Hayır, bunu [doğrudan] yapamazsınız. 0-8000 veya MAX'tır. 10000 verecektir söylemek kullanarak

Denemesi:

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

Bununla birlikte bir CHECK contraint bir VARCHAR (MAX) sütunu kullanabilirsiniz. gibi bir şey:

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

Hayır, yapamazsın. veya varchar (< = 8000) veya varchar (MAX) arasında hiçbir şey yoktur.

Sen bu olsa yapabilirsiniz:

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

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

kontrol here.

İlgili konular