Выбор XML из SQL Server 2005 (строка отображается как ноль) - PullRequest
0 голосов
/ 08 января 2009

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

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

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

Я также нашел результаты запроса -> sql server -> results в grid и установил предел для xml равным «unlimited», но, похоже, он все еще не «работает» ... (те, которые работают, имеют это установите 2mb к сведению)

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

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

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

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

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

SELECT * FROM someTableForXml

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

Ответы [ 2 ]

0 голосов
/ 23 января 2009

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

0 голосов
/ 08 января 2009

У меня есть 2 отдельных вопроса, я думаю:

  1. SSMS поведение
  2. xml comversion

SSMS поведение

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

Или CONVERT to varchar (max), чтобы SSMS обрабатывал его как данные больших объектов (но см. Следующую информацию)

xml преобразование 43679, вероятно, вызвано преобразованием в varchar (max). См. CAST AND CONVERT и параметр стиля CONVERT для XML. Стиль по умолчанию «отбрасывает незначительные пробелы», и у вас нет стиля выше.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...