2011-07-22 6 views
2

私は、SQL Serverのテーブルを持っている... XML列を持つSqlServerのXMLデータ型 - 完全なエンド要素

[ID] [int] IDENTITY(1,1) NOT NULL, 
[FirstName] [nvarchar](100) NULL, 
[LastName] [nvarchar](100) NULL, 
[DataItemsXml] [xml] NULL, 

を強制する方法。この列にxmlを次の形式で保存します。

空の要素の項目2に注目してください。私はこの方法でこれを保存して、変更できないコードをサポートする必要があります。

私はこの形式で挿入または更新文でXMLを渡す場合でも、SQL Serverは、次の項目-2のような空の要素を変換するように見える...

<data> 
    <item-1>Some Data Here</item-1> 
    <item-2 /> 
</data> 

私はこれが完全であることを理解有効なXMLが必要ですが、SQL Serverに空の要素の場合でも、要素の完全な終了タグを使用して最初の形式で格納する必要があります。

私はこれを行う方法を理解できません。

アイデア?ありがとう!

答えて

3

According to Microsoft

SQL ServerはXMLインスタンスの内容を保存しますが、XMLデータモデルの 重要であると考えられていないXMLインスタンスの側面を保持されませ ありません。つまり、取得されたXML インスタンスは、 サーバーに格納されたインスタンスと同一ではなく、同じ情報を含みます。

SQL Serverに任意の要素を展開させるオプションはありません。

あなたが必要とするすべてのにXMLであるのではなく、それを照会する場合、再解析を避けることになる、varchar(max)フィールドとして、それを格納することができます。また、実際のxmlフィールドである必要がある場合は、それを検索するときにテキストに変換し、コンパクト表現を文字列操作を使用して最終要素フォームに変換することもできます。理論的にはSQL Serverでこのような文字列操作を行うことはおそらく可能ですが、可能であればCLRプロシージャまたはアプリケーションで行う方がはるかに良い方法です。

+0

ありがとうございました。私はそれが事実であることを恐れていた。私はデータのクエリを行うので、私はコード内で違ったやり方で処理する必要があります。 – Kevin

関連する問題