Требования и ограничения для коллекций схем XML на сервере

Применимо к: SQL Server (все поддерживаемые версии) базы данных Azure SQL

Язык определения XML-схем (XSD) имеет некоторые ограничения при проверке правильности столбцов SQL, использующих тип данных xml . В следующей таблице содержатся подробные сведения об этих ограничениях и рекомендации по изменению XSD-схемы, таким образом, чтобы обеспечить возможность работы с SQL Server. В статьях этого раздела содержатся дополнительные сведения о конкретных ограничениях и рекомендациях по работе с ними.

Item Ограничение
minOccurs и maxOccurs Значения атрибутов minOccurs и maxOccurs должны укладываться в 4-байтовые целые числа. Схемы, которые не соответствуют, отклоняются сервером.
<xsd:choice> SQL Server отклоняет схемы, имеющие <частицу xsd:choice> без дочерних элементов, если частица не определена со значением атрибута minOccurs равным нулю.
<xsd:include> В настоящее время SQL Server не поддерживает этот элемент. XML-схемы, содержащие данный элемент, отклоняются сервером.

В качестве решения xml-схемы, включающие директиву <xsd:include> , можно предварительно обработать для копирования и слияния содержимого всех включенных схем в одну схему для отправки на сервер. Дополнительные сведения см. в разделе Предварительная обработка схемы для слияния включаемых схем.
<xsd:key>, <xsd:keyref> и <xsd:unique> В настоящее время SQL Server не поддерживает эти ограничения на основе XSD для обеспечения уникальности или установки ключей и ссылок на ключи. Xml-схемы, содержащие эти элементы, не могут быть зарегистрированы.
<xsd:redefine> SQL Server не поддерживает этот элемент. Сведения о другом способе обновления схем см. в разделе "<Элемент xsd:redefine>".
<Значения xsd:simpleType> SQL Server для простых типов, имеющих секундные компоненты, отличные от xs:time и xs:dateTime, поддерживается точность только до миллисекунд, а для компонентов xs:time и xs:dateTime— точность до 100 наносекунд. SQL Server накладывает ограничения на все распознанные перечисления простых типов XSD.

SQL Server не поддерживает использование значения NaN в <объявлениях xsd:simpleType>.

Дополнительные сведения см. в разделе"Значения" для <объявлений xsd:simpleType>.
xsi:schemaLocation и xsi:noNamespaceSchemaLocation SQL Server пропускает эти атрибуты, если они присутствуют в данных экземпляра XML, вставленных в столбец или переменную с типом данных xml .
xs:QName SQL Server не поддерживает типы, производные от xs:QName, которые используют элемент ограничения схемы XML.

SQL Server не поддерживает типы объединения с xs:QName в качестве элемента-члена.

Дополнительные сведения см. в разделе Тип xs:QName.
Добавление элементов к существующей группе замещения Нельзя добавлять элементы в существующую группу подстановок в коллекции xml-схем. Группа замещения в схеме XML ограничена в том, что главный элемент и все члены этого элемента должны быть определены в одной инструкции {CREATE | ALTER} XML SCHEMA COLLECTION.
Канонические формы и ограничения шаблона Каноническое представление значения не может нарушать ограничение шаблона для его типа. Дополнительные сведения см. в разделе Канонические формы и ограничения шаблона.
Аспекты перечисления SQL Server не поддерживает XML-схемы с типами, имеющими аспекты шаблона или перечисления, которые нарушают эти аспекты.
Длина аспекта Аспекты length, minLengthи maxLength хранятся как тип long . Этот тип является 32-разрядным типом. Поэтому для этих значений допускаются значения в пределах 2^31.
Атрибут идентификатора Каждый компонент XML-схемы может иметь атрибут ID. SQL Server применяет уникальность для <объявлений xsd:attribute> типа идентификатора, но не сохраняет эти значения. Областью видимости, в пределах которой значения должны быть уникальными, является инструкция {CREATE | ALTER} XML SCHEMA COLLECTION.
Тип идентификатора SQL Server не поддерживает элементы типа xs:ID, xs:IDREF или xs:IDREFS. Схема не может объявлять элементы этого типа или элементы, полученные ограничением или расширением этого типа.
Локальное пространство имен Локальное пространство имен должно быть явно указано для <элемента xsd:any> . SQL Server отклоняет схемы, содержащие пустую строку ("") в качестве значения атрибута пространства имен. Вместо этого SQL Server требует явно указать значение «##local», которое означает, что элемент без квалификатора или атрибут будет использоваться как экземпляр символа-шаблона.
Смешанный тип и простое содержимое SQL Server не поддерживает ограничение смешанного типа простым содержимым. Дополнительные сведения см. в разделе Смешанный тип и простое содержимое.
NOTATION, тип SQL Server не поддерживает тип NOTATION.
Условия исчерпания памяти При работе с большими коллекциями схем XML может возникнуть состояние нехватки памяти. Решения этой проблемы см. в разделе Большие коллекции XML-схем и условия нехватки памяти.
Повторяющиеся значения SQL Server отклоняет схемы, атрибуты block или final которых содержат повторяющиеся значения, например "restriction restriction" и "extension extension".
Идентификаторы компонента схемы SQL Server ограничивает идентификаторы компонентов схемы до максимальной длины в 1000 символов Юникода. Кроме того, пары суррогатных символов в рамках идентификаторов не поддерживаются.
Сведения часового пояса В SQL Server 2008 и более поздних версиях при проверке схемы XML сведения о часовом поясе полностью поддерживаются для значений xs:date, xs:timeи xs:dateTime . В режиме обратной совместимости с SQL Server 2005 (9.x) сведения о часовом поясе всегда приводятся в формат UTC (время по Гринвичу). Для элементов типа dateTime сервер преобразует и вернет указанное время во время по Гринвичу, используя величину смещения (-05:00).
Типы объединения SQL Server не поддерживает ограничения типов объединения.
Десятичные числа переменной точности SQL Server не поддерживает десятичные разряды переменной точности. Тип xs:decimal представляет десятичные числа произвольной точности. Обработчики XML, соответствующие минимальным требованиям, должны поддерживать десятичные числа как минимум totalDigits=18знаков. SQL Server поддерживает количество знаков totalDigits=38, , но ограничивает число знаков после запятой десятью. Все экземпляры значений xs:decimal внутренне представляются сервером в виде числового типа SQL (38, 10).

Дальнейшие действия

См. также раздел