Использование ключевого слова CONTENT при создании таблицы с столбцом XML из коллекции XML Schema

Создавая таблицу со столбцом типа XML, я имею в виду сложную сборку XML-схем . Когда я укажу схему XML , у меня есть возможность указать ключевое слово CONTENT или DOCUMENT . Последнее гарантирует, что данные XML будут храниться как документ в одном столбце.

Согласно видеоуроку, CONTENT сохранит XML-данные в фрагментах .

Помимо вышеприведенного утверждения, я не могу найти ссылки в другом месте относительно использования ключевого слова CONTENT и его последствий для схемы и данных.

Я хотел бы знать, как создавать и управлять фрагментами, и как и как их можно запросить индивидуально. Далее, как фрагменты коррелируют. Затем, когда я изменяю сборку XML Schema Collection, каково влияние.

    на самом деле я думаю, что SQLServer 2005 XML довольно хорошо документирован.
    CONTENT является стандартным и позволяет использовать любой допустимый XML. ДОКУМЕНТ является более конкретным и означает, что XML-данные, которые вы можете сохранить, разрешено иметь только один узел верхнего уровня.

    Создайте:

    CREATE TABLE XmlCatalog ( ID INT PRIMARY KEY, Document XML(CONTENT myCollection)) 

    Вставка:

     INSERT INTO XmlCatalog VALUES (2, '<doc id="123"> <sections> <section num="1"><title>XML Schema</title></section> <section num="3"><title>Benefits</title></section> <section num="4"><title>Features</title></section> </sections> </doc>') 

    Выбрать:

     SELECT xCol.query('/doc[@id = 123]//section') FROM XmlCatalog WHERE xCol.exist ('/doc[@id = 123]') = 1 

    …и так далее. Язык запросов больше или меньше в подмножестве xpath 1.0.

    Если вы изменяете XSD, он проверяется на вложениях и обновлениях и сохраняется в xml каждого элемента. Насколько я понимаю документ, также разрешено добавлять несколько схем для одного столбца, чтобы записи могли ссылаться на разные схемы.

    РЕДАКТИРОВАТЬ:
    Хорошо, прочитав отдельные части документации, я думаю, я понимаю, в чем проблема. Ссылка не очень ясна в этом пункте, но, насколько я понимаю, только записи с одним узлом верхнего уровня могут быть привязаны к схемам XSD.
    В связи с тем, что для XSD-Schemas требуется один узел верхнего уровня, определяющий используемый XSD-файл, будет невозможно проверить фрагменты, содержащие более одного элемента верхнего уровня. Я не пробовал, но думаю, что это невозможно.
    Однако представляется целесообразным определить столбец CONTENT, изменить XSD и сохранить оба XML с одним узлом верхнего уровня, ссылающимся на XSD, а также на XML-фрагменты, которые будут проверяться только на предмет корректности. Доступ к фрагментам можно получить с помощью отображения языка запросов XPath в вышеприведенном заявлении.
    Я не могу рассказать вам о последствиях для работы. В ссылке упоминается, что XSD хранятся в строке, поэтому для этого потребуется дополнительное пространство внутри db. Запросы XPath также должны быть выполнены. Несмотря на то, что xpath обычно довольно быстро, я предполагаю, что он может уменьшить производительность, потому что он должен выполняться в каждой строке, чтобы получить результат. Чтобы убедиться, что вам нужно проверить план выполнения для вашего конкретного запроса в зависимости от размера и сложности хранимого xml, а также выражения xpath.

    Interesting Posts

    Ошибка поиска SQL Server при большой нагрузке (200 одновременных пользователей)

    Ошибка – атрибут connectionStringName не разрешен

    Доступен ли XE Profiler (SSMS 17.3) с помощью SQL Azure

    Отключить журнал транзакций

    Преобразование типов данных из Oracle в SQL Server в проекте ASP.NET

    SQL Server находит все вычисленные и неперечисленные столбцы

    как выбрать данные из таблицы, где другой столбец в другой таблице равен моему значению параметра?

    Есть ли библиотека с альтернативной реализацией InsertAllOnSubmit, которая использует SqlBulkCopy?

    Ограничивает ли ограничение внешнего ключа значение null?

    Sql Server – есть ли способ для столбца `Concat` nvarchar в Select As, например` Agregate functions`

    Лучший подход для повышения эффективности запросов при обновлении большого содержимого таблицы

    Почему «ORDER BY» нарушает мой запрос?

    Результат запроса SUM, который содержит UNION ALL и CTE

    Отладка соединения между VS в C # и SQL Server

    Как я могу улучшить производительность этого LINQ?

    Давайте будем гением компьютера.