varchar(max) MS SQL Server 2000,problems?

29 浏览
0 Comments

varchar(max) MS SQL Server 2000,problems?

我继承了一个asp.net网站项目,目前它的后端是运行在SQL Server 2000上的。

我在本地数据库的副本上进行了一些数据库更改,使用的是SQL Server 2005 Express。我使用varchar(max)列创建了一个表。它们用于存储任意长度的XHTML代码片段。

在stackoverflow上浏览时,我遇到了这个问题:

始终使用nvarchar(MAX)有什么缺点吗?

用户mattruma说他通过使用在SQL Server 2000上使用varchar(max)这种方式"吃了亏"。

鉴于生产数据库运行在SQL Server 2000上,我应该使用什么替代varchar(max)呢?

提前感谢任何帮助!

0
0 Comments

(varchar(max) MS SQL Server 2000, problems?)

在MS SQL Server 2000中,如果使用varchar(max)数据类型,可能会出现问题。下面是该问题出现的原因以及解决方法。

原因:

如果使用Text字段,可能会对该字段的搜索功能造成影响。

- OP的问题中没有涉及到在该列上进行搜索。

解决方法:

不建议使用TEXT数据类型,因为它在未来的Microsoft SQL Server版本中将被移除。

0
0 Comments

在SQL Server 2000中,varchar(MAX)是不被支持的,因此如果你的数据库是SQL Server 2000,varchar(MAX)的限制就不是一个问题。如果你需要存储超过8K个字符,你唯一的选择就是使用TEXT列。然而,需要注意的是TEXT列也有很多限制。

例如,你不能轻松地对TEXT列进行排序或分组,也不能将它们与其他列进行比较。也就是说,你不能像这样查询:Select * from mytable where Mytext1 = mytext2

其他相关问题包括:

  • 我建议无论选择哪种方式,都使用NTextNVarchar列来支持Unicode。
  • 如果表中有很多其他列,而varchar(8000)列经常接近满,可能会出现超过8K行限制的问题。也要记住这一点。
0
0 Comments

在MS SQL Server 2000中,不支持使用VARCHAR(Max)。解决方法是使用VARCHAR(8000)或者TEXT。需要注意的是,如果选择使用VARCHAR(8000),一行数据的大小不能超过8060字节的限制。如果填满了varchar(8000)表,并且有许多其他大的列,就会出现错误。这时可以使用Text类型来解决问题。Text类型的存储位置默认是分开的,表中会保存一个指针。但是可以通过设置选项来改变这种行为,让文本类型的数据在达到一定大小之前都保存在表中。如果大部分的数据都比较小,可以考虑启用这个选项。在这个问题中,我们不得不切换到VARCHAR(8000)

0