Существует ли ограничение по размеру для значений, возвращаемых хранимой процедурой в SQL 2005? - PullRequest
0 голосов
/ 28 февраля 2009

Я пытаюсь вернуть значение Xml из SQL Server 2005, используя For Xml. Существуют ли какие-либо ограничения в размере XML, возвращаемого с SQL Server?

Я буду использовать ExecuteXmlReader для получения значения в моем коде C #.

Кроме того, есть ли ограничения на данные, которые могут храниться в XmlReader?

Любые мысли ...

Ответы [ 7 ]

5 голосов
/ 28 февраля 2009

Нет практического предела, но вы обычно возвращаете эквивалент nvarchar (MAX), так что вы, вероятно, столкнетесь с пределом ~ 2 миллиардов символов (и, вероятно, намного меньше, чем, потому что ограниченного свободного адресного пространства).

Однако нет небольших ограничений, таких как 32-килобайтный оператор SQL, о которых вам нужно беспокоиться.

3 голосов
/ 31 марта 2009

Технически существует ограничение в 1 гигабайт, поскольку тип данных XML основан на типе данных NVARCHAR (MAX). Но если у вас есть XML-документ на 1 гигабайт, вам нужно уменьшить его.

1 голос
/ 01 марта 2009

Обязательно используйте следующий код:

while(xmlReader.Read()){ 
...
}

в противном случае вы можете получить недопустимый XML, если ваш XML-документ слишком велик, чтобы поместиться в одну запись. SQL Server распределит его по нескольким записям, так что сегодня ...

0 голосов
/ 17 сентября 2013

SQL Server -> XML, затем C # переводит текст в XML. Там не очень эффективно.

Потяните данные в норме. Используйте устройство для чтения данных. Тогда вы можете получить это в переводимом формате. Каков потребитель этих данных? Им действительно нужен XML? Им нужен регулярный дамп данных?

Кроме того, вы можете использовать DataSet. У вас может быть хороший пример для DataSet здесь. Вы можете сохранить это как XML и сохранить или отправить. DataSet предназначен для хранения набора табличных данных.

0 голосов
/ 23 декабря 2010

Если вы видите свои результаты в SQL Server Management Studio, есть возможность указать, сколько данных он может отображать, и по умолчанию он составляет всего 2 МБ.

Чтобы изменить его, следуйте по этому пути:
Инструменты> Параметры> Результаты запроса> SQL Server> Результаты в сетке> Максимальное количество получаемых символов

0 голосов
/ 28 февраля 2009

В SQL 2005 и .Net 2.0 Microsoft не публикует лимит, но на практике наборы результатов большого размера могут давать сбои с ошибками «недостаточно памяти» и т. Д.

Поскольку XML создает дополнительную нагрузку на сервер БД, вы уверены, что вам не будет лучше обрабатывать необработанные данные в XML на сервере приложений или клиенте?

0 голосов
/ 28 февраля 2009

Нет, ограничений нет. Но должно быть очевидно, что если вы вернете много мегабайт данных, скорость извлечения данных пострадает.

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