Выход XML усечен в SQL

Мне нужно вернуть свой результирующий набор в XML, и это отлично работает, но если количество записей увеличивается, мой xml-вывод truncated вот мой запрос

select t.id,t.name,t.address from test FOR XML AUTO, ROOT('Response'), ELEMENTS

Однако я установил некоторую опцию для увеличения выходного результирующего набора, например..

Tools --> Options --> Query Results --> SQL Server --> Results to Text --> Maximum              
number of characters displayed in each column
Tools --> Options --> Results --> Maximum characters per column

но все же я не могу получить желаемый результат.

предложите мое решение

EDIT: Однако, когда я нажимаю на XML, он открывается в другом окне запроса и показанном здесь всем xml, но он не возвращает весь xml вместо усеченного xml.

Спасибо....

Ответы

Ответ 1

У меня была такая же проблема с наборами студий управления и наборами результатов xml. Я решил это, получив программный выход с помощью С# с помощью SqlDataReader.

Ответ 2

Попробуйте следующее:

Declare @xmldata xml
set @xmldata = (select ... From test for xml...)
select @xmldata as returnXml

Ответ 3

Если ваш XML-результирующий набор по-прежнему усекается даже после изменения параметров SSMS, используйте утилиту SQLCMD с параметром XML ON до запуска вашего оператора XML. Направьте свой вывод в файл с помощью переключателя -o. SQLCMD - это утилита командной строки, которая очень проста в использовании. См. http://msdn.microsoft.com/en-us/library/ms162773.aspx.

Ответ 4

Это сработало для меня (SSMS 2012): Инструменты > Параметры > Результаты запросa > SQL Server > Результаты для сетки: Максимальные символы Retried: Данные XML: Неограничен. Затем я сохранил результаты сетки в файл.

Ответ 5

У меня была такая же проблема. Я изменяю параметр "Результат запроса" на "Неограниченно", но он не работал. Работает. Это не очень аккуратно, но если вы хотите продолжить использовать студию управления SQL Server и получить результаты. Измените запрос на преобразование xml, используя:

convert(xml,'<xml><![CDATA[' + cast(MyColumnWithXml as varchar(max)) + ']]></xml>') 

Возвращается полный текст. Обратите внимание, что вам нужно будет сделать некоторое форматирование в конце.

Ответ 6

Выход XML, который вы получаете в окне вывода запроса, на самом деле не предназначен для сохранения действительные документы XML. Вы можете получить действительный XML из SQL Server, когда вы захватить его как поток с использованием управляемых классов ADO или SQLXML в .NET

Однако вы можете ограничить размеры выходных данных запроса, используя В SQL Server Management Studio перейдите в Инструменты → Параметры → Результаты запроса → SQL Server → Результаты в текст → Максимальное количество символов, отображаемых в каждом столбце

Ответ 7

Вы можете использовать SQL Management Studio 2008 для механизма базы данных SQL Server 2005. Если вы это сделаете, значения по умолчанию должны быть достаточно большими, но в Инструментах → Параметры → Результаты запроса → SQL Server отображаются результаты для сетки и результаты для текста node.

Результаты для Grid позволяют вам контролировать максимальный размер для данных XML явно, а максимальный размер по умолчанию - 2 МБ.

Если у вас нет лицензии на SSMS 2008, вы можете использовать экспресс-версию бесплатно здесь.