我开始知道,
ntext,text和image数据类型将在Microsoft SQL Server的未来版本中删除。 (http://msdn.microsoft.com/en-us/library/ms187993%28v=sql.90%29.aspx)
现在我有一些Text
列的表格。它们包含大量文字,我关注的是Varchar(max)
可以保留我们所需的文本长度吗?
我应该更新我的表并将数据类型更改为Varchar(Max)
吗?它会影响已有的数据吗?
我正在使用SQL Server 2008.
答案 0 :(得分:1)
请找到text,ntext和image数据类型的等效项以获得向前兼容性。
text -> varchar(max)
ntext -> nvarchar(max)
image -> varbinary(max)
在此处检查Deprecated Datatypes。
答案 1 :(得分:1)
VARCHAR(MAX)
是TEXT
的推荐替代品,NVARCHAR(MAX)
是NTEXT
的替代品。但是,您不能简单地执行ALTER TABLE
并更改这些字段而不先审核您的用法 - 尤其是TEXT
和NTEXT
具有用于编辑它们的特殊功能(READTEXT
,{ {1}},WRITETEXT
)不适用于UPDATETEXT
(并且部分不必要,因为常规字符串操作正常工作)。有效地更新非常大的(N)VARCHAR(MAX)
字段(例如,需要在中间某处修改的兆字节数据)是通过MAX
完成的。
如果您不在任何地方使用这些函数,并且所有代码都只是设置值(这是常见的),那么更改列类型应该没有问题,但要注意这需要重建整个表并且是一个可能很昂贵的操作如果你的桌子很大,需要停工。
对于新作品,请勿使用UPDATE ... C.WRITE()
类型。对于现有软件,请检查您的需求。最终TEXT
和TEXT
支持将被完全删除,但该时间尚未到来 - 从SQL Server 2014开始,它们仍然受支持,没有迹象表明它们何时最终会被删除。