SQL Server文本数据类型最大长度= 65,535?

时间:2010-06-09 17:30:06

标签: sql-server text types

我正在使用的软件使用文本字段来存储XML。从我在线搜索,text数据类型应该包含2 ^ 31 - 1个字符。目前,SQL Server每次都会以65,535个字符截断XML。我知道这是由SQL Server引起的,因为如果我直接在Management Studio中向列添加第65,536个字符,它会声明它不会更新,因为字符将被截断。

最大长度是65,535还是因为数据库是在早期版本的SQL Server(2000)中设计的,它使用遗留的text数据类型而不是2005年的?

如果是这种情况,在SQL Server 2005中将数据类型更改为Text会解决此问题吗?

5 个答案:

答案 0 :(得分:9)

这是SSMS的限制而不是文本字段,但是你应该使用varchar(max),因为文本已被弃用

alt text

这也是一个快速测试

create table TestLen (bla text)

insert TestLen values (replicate(convert(varchar(max),'a'), 100000))

select datalength(bla)
from TestLen

为我返回100000

答案 1 :(得分:0)

MSSQL 2000应该允许文本字段中最多2 ^ 31 - 1个字符(非unicode),超过20亿。不知道是什么导致了这种限制,但您可能想尝试使用varchar(max)或nvarchar(max)。它们存储了多个字符,但也允许使用常规字符串T-SQL函数(如LEN,SUBSTRING,REPLACE,RTRIM,...)。

答案 2 :(得分:0)

如果您能够转换列,则可能也是如此,因为在将来的SQL Server版本中将删除text数据类型。 See here

建议使用varchar(MAX)nvarchar(MAX)。在您的情况下,您也可以使用XML数据类型,但这可能会将您绑定到某些数据库引擎(如果这是一个考虑因素)。

答案 3 :(得分:0)

你应该看看

所以我宁愿尝试使用适合使用的数据类型。 不使数据类型适合您以前版本的使用。

答案 4 :(得分:-1)

您可以使用:Plase user SQL query

GO  
EXEC sp_configure 'show advanced options', 1 ;   
RECONFIGURE ;   
GO  
EXEC sp_configure 'max text repl size', -1 ;   
GO  
RECONFIGURE;   

了解更多信息:http://blog.emdiu.com/sql-tips-configure-the-max-text-repl-size-server-configuration-option-commandtext-qua-dai--13