Текстовый тип данных SQL Server Maxlength = 65,535? - PullRequest
5 голосов
/ 09 июня 2010

Программное обеспечение, с которым я работаю, использует текстовое поле для хранения XML.Согласно моим поискам в Интернете, текстовый тип данных должен содержать 2 ^ 31 - 1 символов.В настоящее время SQL Server усекает XML каждый раз до 65 535 символов.Я знаю, что это вызвано SQL Server, потому что, если я добавлю 65 536-й символ в столбец непосредственно в Management Studio, он заявляет, что не будет обновляться, поскольку символы будут усечены.или это может быть потому, что база данных была разработана в более ранней версии SQL Server (2000) и использует устаревший тип данных text вместо 2005?

В этом случае изменение типа данных на Text в SQL Server 2005 решит эту проблему?

Ответы [ 5 ]

10 голосов
/ 09 июня 2010

, что является ограничением 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 для меня

0 голосов
/ 21 февраля 2019

Вы можете использовать: 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

0 голосов
/ 09 июня 2010

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

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

0 голосов
/ 09 июня 2010

Вы должны взглянуть на

Так что я бы лучше попытался использовать тип данных, подходящий для использования. Не соответствует типу данных, который вы используете в предыдущей версии.

0 голосов
/ 09 июня 2010

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...