DOBON.NET DOBON.NETプログラミング掲示板過去ログ

SQL SERVER2005でのXMLについて

環境/言語:[C# FrameWork2.0 WindowsXP SP2 SQL Server2005]
分類:[.NET]

いつもお世話になります。
SQL SERVER 2005について質問です。

今回SQL SERVER 2005でUTF-8で作成されたXMLを扱う
のですが、この場合はDBのデータ型は何を使うのが
良いのでしょうか?

オンラインヘルプを見ていると、XML型というそのまま
の名前の物があるのですが・・・
UNICODEだと他に[ntext , nvarchar]とあるのですが
どれを使えばよいのか悩んでいる次第です。
単純ですが[.net]で使うのならば、UNICODEだから文字は
[ntext , nvarchar]で統一して良いのでしょうか?

どうかご教授お願いいたします。
> 今回SQL SERVER 2005でUTF-8で作成されたXMLを扱う
> のですが、この場合はDBのデータ型は何を使うのが
> 良いのでしょうか?

「どう扱う(扱いたい)」かが重要です。

> UNICODEだと他に[ntext , nvarchar]とあるのですが
> どれを使えばよいのか悩んでいる次第です。

そこにこだわる必要は無いんじゃないですか?
少なくとも最初に注目するべき点ではないと思います。

「DBに入ればいいだけ」なら、blob に突っ込んだっていいはずです。

「XML 型」の列は、DBに格納した XML に対してノードレベルのクエリを行いたい場合に適しています。
なるほど、少し考えすぎでしょうか?

今回はクライアントで作成したXMLをDBに保存し
クライアントから保存したXMLを更新して
再保存するだけです。
ある意味テキストエディタみたいな用途なのです。
> 今回はクライアントで作成したXMLをDBに保存し
> クライアントから保存したXMLを更新して
> 再保存するだけです。

それだけなら、格納先がDBである必然もあまりないですよね?

画像ファイルをDBに入れるか、外部ファイルとして持つか、という議論と同じだと思います。

DBを単純なストレージとしてだけ使うなら、blob でいいんじゃないでしょうか。
サイズ制限も緩やかだし。

あるいは、将来的に XML に対して全文検索を行う構想とかがあるなら nvarchar(MAX) とか。

最初にも書きましたが、結局は「どう扱う(扱いたい)」のかが重要なのです。
なるほど、今後は全文検索等の機能追加を検討しているので
nvarchar(MAX)を使った方が無難ですね。

今回の経験を今後に生かしたいと思います
ありがとうございました。
解決済み!
> なるほど、今後は全文検索等の機能追加を検討しているので
> nvarchar(MAX)を使った方が無難ですね。

単純に↑をやってしまうと、XML のタグも検索にひっかかってしまうんですけどね (^^;

要件にも寄りますが、実際に全文検索する際は、タグを除去したデータを別列で持つとかが必要かもしれません。
今後の考慮する事項として、早速確認してみます。
ご指摘ありがとうございます。
解決済み!

DOBON.NET | プログラミング道 | プログラミング掲示板