Строковые или двоичные данные будут усечены Ошибка 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()