| |
SELECT ... FOR XML в SQL Server 2000, прием данных в формате XML, фрагменты XML (XML fragments) и добавление корневого элемента
Часто бывает необходимо извлечь данные из базы данных SQL Server в формате XML. Наиболее распространенные ситуации:
- передача данных из филиалов в центр или наоборот;
- необходимость загрузить данные в другое приложение;
- необходимость обменяться данными с партнерами
- передача данных на Web-сервер или напрямую в броузер пользователю
Существует множество различных вариантов извлечения данных из базы данных SQL Server в разных XML-совместимых форматах (они рассмотрены ниже). Общие моменты у них следующие:
- При выполнении запроса SELECT ... FOR XML SQL Server всегда генерирует обычный ROWSET (как при выполнении запроса без команды FOR XML), а затем специальный программный модуль SQL Server преобразует этот ROWSET в XML. Поэтому оптимизируются такие запросы как обычные.
- При выполнении запроса SELECT ... FOR XML возвращается единственный столбец, содержащий код XML. Query Analyzer вполне может его обрезать, поэтому рекомендуется в Query Analyzer (если вы работаете с ним) увеличить значение параметра Maximum characters per column (меню Tools -> Options -> вкладка Results).
- Запросы ...FOR XML возвращают неправильно отформатированные (not well-formed) документы XML. Официально такие документы называются фрагментами (XML document fragments). Отличаются они от правильных тем, что в них не хватает корневого элемента, который вполне можно дописать вручную. Например, запрос ...FOR XML вернул:
<Order OrderID="10248"/>
<Order OrderID="10249"/>
Чтобы правильно просмотреть его в броузере, надо добавить корневой элемент:
<OrderList>
<Order OrderID="10248"/>
<Order OrderID="10249"/>
</OrderList>
О добавлении корневого элемента должно позаботиться ваше приложение, принимающее поток данных от SQL Server. На компакт-диске в каталоге XML лежит готовое Web-приложение QueryTool, которое автоматически дописывает корневой элемент queryresults и передает результаты выполнения запроса в Web-броузер. Это приложение можно использовать для отладки запросов ... FOR XML.
| |
 |
|