Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 我可以将VARCHAR大小设置为大于8k但小于最大值吗?_Sql_Sql Server_Database_Sql Server 2005_Tsql - Fatal编程技术网

Sql 我可以将VARCHAR大小设置为大于8k但小于最大值吗?

Sql 我可以将VARCHAR大小设置为大于8k但小于最大值吗?,sql,sql-server,database,sql-server-2005,tsql,Sql,Sql Server,Database,Sql Server 2005,Tsql,从SQL2005开始,VARCHAR(MAX)不再限于8000字节,而是可以使用“溢出”页面将其增加到2GB 但是如果我想把这个列限制在10k字节呢?如果我试图在size参数中输入大于8000的任何内容,似乎会出现错误。这很奇怪,因为MAX与要求2GB限制是一样的。就最大尺寸而言,这似乎是一种“要么全有,要么全无” 有没有办法解决这个问题?没有,你不能[直接]这样做。它是0-8000或最大值 尝试使用10000将给出: The size (10000) given to the type 'va

从SQL2005开始,VARCHAR(MAX)不再限于8000字节,而是可以使用“溢出”页面将其增加到2GB

但是如果我想把这个列限制在10k字节呢?如果我试图在size参数中输入大于8000的任何内容,似乎会出现错误。这很奇怪,因为MAX与要求2GB限制是一样的。就最大尺寸而言,这似乎是一种“要么全有,要么全无”


有没有办法解决这个问题?

没有,你不能[直接]这样做。它是0-8000或最大值

尝试使用10000将给出:

The size (10000) given to the type 'varchar' exceeds the maximum allowed for any data type (8000).
但是,您可以将VARCHAR(MAX)列与CHECK containt一起使用。比如:

CHECK (DATALENGTH([myBigColumn]) <= 10000)
CHECK(DATALENGTH([myBigColumn])不,您不能。

您可以选择varchar(),但它要求您实现一个检查约束:

CHECK (DATALENGTH([VarChar10000]) <= 10000)
检查(数据长度([VarChar10000])
CHECK (DATALENGTH([VarChar10000]) <= 10000)