Поделиться через


Поддержка типов данных xml в SQLXML 4.0

Начиная с версии SQL Server 2005, SQL Server поддерживает типизированные данные XML с помощью типа данных xml. В этом разделе представлены сведения о том, как SQLXML 4.0 распознает экземпляры типов данных xml и реализует их поддержку.

Работа с типами данных xml

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

Задача

Примеры

Тема

Сопоставление столбца xml и его включение в XML-представление

«Сопоставление XML-элемента со столбцом XML-типа»

Сопоставление элементов и атрибутов XSD с таблицами и столбцами по умолчанию (SQLXML 4.0)

Вставка данных в столбец xml с диаграммами обновления

«Вставка данных в столбец XML-типа»

Вставка данных с помощью диаграмм обновления XML (SQLXML 4.0)

Массовая загрузка XML-данных в столбец xml

«Массовая загрузка XML-данных в столбцы XML-типа»

Примеры массовой загрузки XML (SQLXML 4.0)

Рекомендации и ограничения

  • <xsd:any> нельзя сопоставлять со столбцом, включающим тип данных xml. В SQLXML это делается с помощью заметки sql:overflow-field. Другой способ обойти это ограничение – сопоставление поля с типом данных xml в качестве элемента xsd:anyType. Этот способ показан в примере «Сопоставление XML-элемента со столбцом XML-типа», указанном выше.

  • Запрос XPath к содержимому столбца с типом данных xml не поддерживается.

  • Использование столбца xml в заметках, где он не поддерживается (например sql:relationship и sql:key-fields) или не разрешается, приведет к ошибкам SQL Server, которые невозможно будет перехватить в приложении среднего уровня, реализующим SQLXML 4.0. Это происходит потому, что SQLXML не требуются сведения SQL о типах. Это напоминает поведение SQLXML в случае с другими типами данных, например двоичными и BLOB.

  • Сопоставление столбцов xml поддерживается только для XSD-схем. XDR-схемы не поддерживают сопоставление столбцов xml.

  • При синтаксическом анализе XML SQLXML 4.0 использует поддержку, предусмотренную в SQL Server. Столбец xml можно сопоставлять как типизированный или нетипизированный XML. В обоих случаях SQLXML 4.0 не проверяет входной XML. Если входной XML недопустим или имеет неправильный формат, SQL Server сообщает об этом SQLXML и передает пользователю сведения об ошибках, возвращенные сервером.

  • SQLXML 4.0 использует ограниченную поддержку DTD в SQL Server. SQL Server для внутреннего DTD в типе данных xml, с помощью которой можно определять значения по умолчанию и заменять ссылки на сущности их расширенным содержимым. SQLXML передает XML-данные серверу «как есть» (в том числе внутренние DTD). Можно преобразовывать определения DTD в документы XML-схем (XSD) при помощи инструментов сторонних компаний и загружать эти данные вместе с XSD-схемами в базу данных.

  • SQLXML 4.0 не сохраняет инструкции по обработке определений XML (например, <?xml version='1.0'?>) на основе поведения SQL Server. Вместо этого объявление XML рассматривается как директива синтаксическому анализатору XML SQL Server, а его атрибуты (версия, кодировка и автономный XML) теряются после того, как данные преобразовываются в тип данных xml. Все данные XML внутренне хранятся в кодировке UCS-2. Все другие инструкции по обработке в экземпляре XML сохраняются, они допускаются в столбцах xml и могут поддерживаться SQLXML.

См. также

Основные понятия