Выбор xml из sql server 2005 (строка отображается как null)

У меня смехотворно длинная строка xml, в ней> 800000 символов. «Клиент» также является «сервером». Операционная система - windows 2k8 x64. База данных имеет много памяти, как и клиент.

Проблема в том, что как только я набираю какое-то магическое количество символов - ровно 43679 xml-символов - строка возвращает то, что ПОЯВЛЯЕТСЯ быть ''. Я называю их xml-символами, потому что любой пробел, очевидно, удаляется сервером sql, когда он вычисляет длину - что я делаю с этим sql: len (convert (varchar (max), xsl)) Почему число 43679 также сбивает меня с толку ...

У кого-нибудь есть эта проблема? Я фактически подключился к тому же серверу с Windows 2k3 и другим сервером Windows 2k8, и никаких проблем на любом другом компьютере, кроме этого (сам фактический сервер), нет.

Я также нашел результаты запроса -> sql server -> результаты в сетку и установил предел для xml на 'неограниченный', но, похоже, он все еще не 'работает' ... (те, которые работают, имеют это значение 2 МБ fyi)

Спасибо за любые комментарии - я попробую все ... это ничего не мешает работать - я уверен, что это всего лишь один клиент, но он сводит меня с ума! :)

ОБНОВЛЕНИЕ: к вашему сведению - проблема не в преобразовании - я действительно не хочу его преобразовывать. единственная причина, по которой я использую convert в этом примере, - это использовать len (len не работает с типами данных xml), поэтому я могу узнать, насколько «длинным» является xml.

Проблема в том ...

INSERT INTO someTableForXml(theXml)
VALUES ('<this><is><some><really>long xml</really></some></is></this>')

Теперь скопируйте и вставьте это, пока у вас не будет около 100000 строк xml, и вставьте его ... Когда я выбираю строки обратно, используя:

SELECT * FROM someTableForXml

Я возвращаюсь на 1 строку, и в «сетке» я получаю симпатичную небольшую гиперссылку для xml, которая, когда я щелкаю по ней, показывает мне «полный xml» в новой вкладке. Однако для МЕНЯ ... Как только я передаю это странно магическое число, оно перестает это делать и просто выглядит пустым.

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
0
965
2

Ответы 2

Я думаю, у вас есть 2 отдельные проблемы:

  1. Поведение SSMS
  2. преобразование xml

Поведение SSMS

Попробуйте выполнить дамп с помощью bcp в файл и посмотрите, что у вас получится. Таким образом вы обойдете SSMS и это странно.

Или ПРЕОБРАЗОВАТЬ в varchar (max), чтобы SSMS рассматривал его как данные LOB (но см. Следующую информацию)

преобразование xml 43679, вероятно, вызвано преобразованием в varchar (max). См. ЛИТЬЕ И ПРЕОБРАЗОВАНИЕ и параметр стиля CONVERT для XML. Стиль по умолчанию «отбрасывает незначительные пробелы», и у вас нет стиля выше.

Я думаю, что SSMS применяет максимальную длину не-LOB-данных (65535) на основе столбца с правильным CONVERT, но отображает его без пробелов. Отсюда и несоответствие.

я ценю ваше время. Благодарю. к сожалению, я не думаю, что это актуально, поэтому я обновил исходный вопрос более подробно.

dovholuk 08.01.2009 15:26

Я думаю, это потому, что у вас нет <?xml version = "1.0" encoding = "UTF-16"?> в начале вашего XML.

Другие вопросы по теме