2012-03-29 2 views
1

Каковы преимущества и недостатки использования столбца XML вместо отдельной таблицы?Использование столбца XML вместо таблицы базы данных SQL

На самом деле я в настоящее время с использованием колонки с типом данных XML, и мне нужно, чтобы разобрать этот column.Value в этом столбце может быть в следующем формате

<user> 
<firstname></firstname> 
<lastname></lastname> 
<children> 
    <child1>abc</child1> 
    <child2>pqr</child2> 
    <child3>lmn</child3> 
</children> 
</user> 

мне нужно перебирать Childern узел и выяснить, три значения дочерних узлов с использованием SQL-запроса. Возможно ли использование запроса?

+0

Вы хотите сказать, что хотите использовать документы XML? –

+1

это относится к типу данных столбца XML SQL Server SQL? – devio

+0

Столбец XML должен быть ** в таблице базы данных ** .... так что именно вы пытаетесь сделать с этим? Что случилось с таблицей? –

ответ

2

Я работал над проектами два SQL Server/XML, и из этого опыта мое мнение может быть немного предвзятым.

В первом случае SQL Server 2005 имел проблемы parsing datetimes with time zone information (поскольку 2005, как правило, не знал о часовом поясе). В этом проекте XML использовался только для передачи данных между приложением и веб-службой, где каждое исходящее и входящее XML-сообщение необходимо было регистрировать в базе данных.

Во втором случае, данные в основном хранятся в XML, и этот подход показал несколько проблем SQL Server (2008) имеет/имел с XML:

  • в то время как вы можете хранить XML в столбец (оба набрали и нетипизированный), вы не можете определить обычные ограничения в XML: уникальность, чеки, внешние ключи

  • отсутствие ограничений неявно означает согласованность данных в XML не гарантируются

  • CRUD всегда означает, что вы всегда нужно писать заявления XQuery для извлечения записей вы работать на

  • обработки данных в .Net требует данных XML для сериализации и из .Net прокси-классы (Xsd.exe)

  • изменяющего XML-схем уже упоминаемые столбцами таблицы, являются основной головной болью, так как I described on my blog.

  • Если ваш исходный XML-код содержит атрибут кодирования в заголовке xml, SQL Server будет refuse to process the XML вообще.

Если вам нужно обработать XML-данные в SQL, вы должны предоставить таблицу импорта XML и обработать ее содержимое в обычные реляционные таблицы. Вы можете решить, как реализовать это в .NET или TSQL.

Смежные вопросы