2010-06-09 3 views
4

Программное обеспечение, с которым я работаю, использует текстовое поле для хранения XML. Из моих поисковых запросов в Интернете тип данных должен содержать 2^31 - 1 символ. В настоящее время SQL Server обрезает XML по 65535 символов каждый раз. Я знаю, что это вызвано SQL Server, потому что, если я добавлю 65536-й символ в столбец непосредственно в Management Studio, он заявит, что он не будет обновляться, потому что символы будут усечены.SQL Server Text Тип данных Maxlength = 65,535?

Является ли максимальная длина действительно 65,535, или это может быть связано с тем, что база данных была разработана в более ранней версии SQL Server (2000) и использует устаревший тип данных text вместо 2005 года?

Если это так, изменит тип данных на Text в SQL Server 2005, исправьте эту проблему?

+0

Это часть зеркальной базы данных в процессе синхронизации. Я надеялся избежать необходимости изменять поле для всех клиентов. – craigmj

ответ

9

, что это ограничение SSMS не текстового поля, но вы должны использовать VARCHAR (макс), так как текст устаревшее

alt text

Здесь также быстрый тест

create table TestLen (bla text) 

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

select datalength(bla) 
from TestLen 

Возврат 100000 для меня

0

MSSQL 2000 должен допускать до 2^31 - 1 символов (не unicode) в текстовом поле, которое составляет более 2 миллиардов. Не знаю, что вызывает это ограничение, но вы можете попробовать использовать varchar (max) или nvarchar (max). Они хранят как можно больше символов, но также позволяют использовать регулярные строковые функции T-SQL (например, LEN, SUBSTRING, REPLACE, RTRIM, ...).

+2

На самом деле nvarchar хранит только половину числа символов, чем varchar, потому что это unicode и использует 2 байта на символ. – Koen

0

Если вы можете преобразовать столбец, вы также можете, так как тип данных text будет удален в будущей версии SQL Server. See here.

Рекомендация заключается в использовании varchar(MAX) или nvarchar(MAX). В вашем случае вы также можете использовать тип данных XML, но это может привязать вас к определенным механизмам базы данных (если это необходимо).

Смежные вопросы