Программное обеспечение я работаю с использованием текстовое поле для хранения XML. От моих поисков онлайн, тип данных text, как предполагается, содержит 2^31 - 1 символ. В настоящее время SQL Server усекает XML в 65 535 символах каждый раз. Я знаю, что это вызывается SQL Server, потому что, если я добавляю 65,536-й символ к столбцу непосредственно в Studio управления, он указывает, что не обновит, потому что символы будут усеченными.
Макс. длина действительно 65,535, или мог это быть, потому что база данных была разработана в более ранней версии SQL Server (2000), и это использует наследие text
тип данных вместо 2005?
Если это верно, будет изменение типа данных к Text
в SQL Server 2005 устраняют эту проблему?
, что является ограничением SSMS, а не текста поле, но вы должны использовать varchar (max), поскольку текст устарел
Вот также быстрый тест
create table TestLen (bla text)
insert TestLen values (replicate(convert(varchar(max),'a'), 100000))
select datalength(bla)
from TestLen
Возвращает 100000 для меня
Вам следует ознакомиться с
Поэтому я бы предпочел использовать тип данных, подходящий для использования. Не подбирать тип данных для использования в предыдущей версии.
Если вы можете преобразовать столбец, вы тоже можете это сделать, поскольку тип данных text
будет удален в будущей версии SQL Server. См. Здесь .
Рекомендуется использовать varchar (MAX)
или nvarchar (MAX)
. В вашем случае вы также можете использовать тип данных XML
, но это может связать вас с определенными механизмами базы данных (если это необходимо).
MSSQL 2000 должен разрешить до 2^31 - 1 символов (не юникод) в текстовом поле, что составляет более 2 миллиардов. Не знаю, что вызывает это ограничение, но вы можете попробовать использовать varchar(max) или nvarchar(max). Они хранят столько же символов, но позволяют также использовать функции T-SQL для обычных строк (такие как LEN, SUBSTRING, REPLACE, RTRIM,...).