Строка или двоичные данные будут усечены Ошибка SQL - PullRequest
9 голосов
/ 26 июля 2011

У меня есть хранимая процедура SQL, которая принимает параметр типа VARCHAR (MAX). Насколько я знаю и согласно всем, что я читал, максимальный размер для таких строк составляет 2 ГБ: MSDN

По какой-то причине при передаче строки размером более 8 КБ я получаю:

Строка или двоичные данные будут обрезаны.

Почему я получаю это сообщение об ошибке и как его устранить?

Ответы [ 4 ]

8 голосов
/ 02 октября 2012

Согласно BoL (ссылка, которую вы указали), существует разница в интерпретации.Максимальная сумма, которую вы можете использовать в запросе (n-часть), составляет 8000. В целях хранения varchar (max) может обрабатывать 2 ГБ на диске.

Это просто интерпретация типов данных для запросов и хранения.Итак, нижняя строка, вы можете использовать только 8000 символов в запросе ....

8 голосов
/ 26 июля 2011

, чтобы избежать этой проблемы, вы должны сначала привести вашу строку к varchar(max):

column = cast(other_column as varchar(max))

, так что любая строка длиннее max (8000 или 4000, в зависимости от версии) будет обрезана домаксимальная длина.

1 голос
/ 01 апреля 2014

Вы передаете строку больше, чем столбец в базе данных.

Как ваша таблица базы данных выглядит следующим образом:

 EXECUTIVE  varchar(15) 

Но ваша строка вставки, как (в vb.net ):

cmd.Parameters.Add("@EXECUTIVE", Data.SqlDbType.VarChar, 150).Value = CmbExecutive.Text.ToString()
1 голос
/ 17 октября 2012

Вы передаете строку больше , чем столбец в базе данных, верно?Попробуйте увеличить размер вашей колонки.

...