Я извлекаю большое количество записей из нашей базы данных SQL Server в XML, чтобы затем отправить их клиенту.Однако из-за количества строк (около 6000) и количества полей (около 200 на продукт) я могу успешно получить данные, но из-за их размера, если я пытаюсь записать их на экран или отправить их, возникает ошибка из-заего размер (превышен буфер ответов).
Я хотел бы разбить данные на более мелкие сегменты, и я могу придумать способ сделать это, просматривая ответ, и каждые 500 или около того продуктов разбивают его.,
Но я хотел знать, будет ли способ сделать это в SQL?Я думаю, что я мог бы использовать курсор или создать временную таблицу идентификаторов, а затем присоединиться к ней, чтобы создать пакеты XML, но мне кажется, что это было бы совершенно неэффективно.
упрощенный SQL, который я использую:
SELECT (
SELECT product_id, sku, title
FROM products
FOR XML PATH('value'), ROOT('products'), ELEMENTS XSINIL
) as my_xml
Я бы хотел, чтобы возвращаемый набор записей выглядел так -
+--------+----------------------------+
| Batch | XML |
+--------+----------------------------+
| 1 | <products xmlns xsi= ... > |
| 2 | <products xmlns xsi= ... > |
| 3 | <products xmlns xsi= ... > |
| ... | ... |
+--------+----------------------------+