Как я могу хранить более 4000 символов в параметре SQL Server?
Я пытаюсь передать XML
который превышает 4000 символов, в хранимую процедуру. Я пытался использовать NTEXT
, NVARCHAR(MAX)
, VARCHAR(MAX)
, VARCHAR(8000)
и XML
в качестве типа параметра, но всегда получаю ошибку:
System.Data.SqlClient.SqlException: Строковые или двоичные данные будут усечены. Заявление было прекращено.
Значение не сохраняется в таблице, это только переменная, которая выбрала данные из нее и затем хранится в таблицах.
- Задача веб-службы SSIS возвращает файл с «& lt;», & lt; / Value & gt; персонажи
- Анализ XML в SQL Server
- Вы можете создать таблицу из XML
- Поиск элемента * без * данного дочернего элемента (где дочерний элемент является переменным)
- Ускорьте загрузку XML на SQL Server с помощью EF. Повысить производительность, применяя схему?
Может ли ASP.NET не отправлять более 4000 символов в качестве параметра? Или есть параметр в SQL Server, который я могу отключить?
Благодаря,
Томас
РЕДАКТИРОВАТЬ:
Это работает с NTEXT
. Я вошел в детали ошибки и обнаружил, какая строка SQL вызывала ошибку, и выяснилось, что для VARCHAR(50)
который должен был быть VARCHAR(MAX)
был полностью несвязанный столбец, который, как предполагается, исходил из 10000 символа XML
но он был абсолютно не связан. Мои извинения.
- T-SQL Заменить узел XML
- Как кодировать XML в T SQL без дополнительных накладных расходов XML
- Запрос XPATH для получения данных из XML, хранящихся в столбце базы данных SQL Server
- Проблема API веб-сайта при выдаче XML-вывода
- T-SQL Создание вложенных XML на основе столбца GROUP BY
- Обработка ProcessParameters как XML в SQL Server
- Добавить в xml, хранящийся в sql 2005
- Получить имена атрибутов из элемента в столбце SQL XML
Это ограничение в SQL Server во всех выпусках. Вы можете разбить xml на две переменные varchar и объединить их в хранимую процедуру. Это решение проблемы.
Разбейте XML в небольших кусках и назначьте их по отдельной переменной, а затем соедините их
DECLARE @ SQL1, @ SQL2
SET @ SQL1 = chunk1
SET @ SQL2 = chunk2
SET @ SQLn = chunkn
exec (@ SQL1 + @ SQL2 ….. + @ SQLn)
Кажется, есть несколько способов сделать это. Так я недавно об этом позаботился.