Строковые или двоичные данные будут усечены Ошибка SQL

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

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

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

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

4 ответа

Решение

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

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

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

column = cast(other_column as varchar(max))

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

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

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

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

 EXECUTIVE  varchar(15) 

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

cmd.Parameters.Add("@EXECUTIVE", Data.SqlDbType.VarChar, 150).Value = CmbExecutive.Text.ToString()
Другие вопросы по тегам