|
||||||||||
| 前のページ 1 2 3 | ||||||||||
| 文字関数をCLRで作成 | ||||||||||
|
照合順序の変更を要する検索処理の問題よりも、頭を悩ませることとなりそうなのは、lenやrightなどの文字列処理を行う関数の対処だ。この対処について、マイクロソフトでは「SQL Server 2005におけるJIS2004対応に関するガイドライン」の中で、ユーザが独自にCLRを使った関数を実装するように示している。
SQL Server 2005におけるJIS2004対応に関するガイドライン
http://go.microsoft.com/?linkid=7003958 ご承知のとおりSQL Server 2005では.NETを使って、ユーザ定義関数を作成し呼び出せるようになっている。CLRとはCommon Language Runtimeの略称で、.NETプログラムの実行環境を意味する。つまりサロゲートペアを正しく扱える文字列関数を.NETで実装して、そちらを使ってほしいというのだ。 先のガイドラインにあるように、マイクロソフトではそのサンプルを用意していて、len_sやright_sのように語尾に「_s」がついた関数を実装する方法を紹介している。たしかに、このサンプルに従って関数を実装し、それを使って文字列処理を行えば正しい結果を得られた。 しかし気になるのが、これはあくまでもサンプルとして提供されている点だ。マイクロソフトが製品として出荷しているものではないから、何らかの問題が生じてもサポートを要求できないのである。またいかにも場当たり的な対処に見えてしまう。本来であれば、Service Packなどの形でパッチを提供し、元々の関数の方を変更するべきであろう。当然、時間が経てばそうなるのではないか、と考えるのが普通ではないだろうか。 そうなると、いまの時点でサンプルに従って自己責任の中で関数を実装し、アプリケーションを変更し、膨大なテストを実行しても無駄になるかもしれない。Service Packで対処されたとなれば、元々の関数を使うようにアプリケーションを再度修正しなくてはならないかもしれないからだ。 |
||||||||||
| まとめ:SQL ServerでJIS X 0213:2004に対応するには | ||||||||||
|
少し長くなってしまったから、SQL Server 2005でJIS X 0213:2004に対応するための手法について、もう一度まとめておくことにしよう。
表1:SQL Server 2005でJIS X 0213:2004に対応するための手法 以上のように、SQL Serverを使ったアプリケーションをJIS X 0213:2004に対応させようとするとアプリケーション側の変更は避けられない。TempDBを使っている場合には、照合順序の変更のために、SQL Serverの再インストールということにもなるだろう。さらには、自己責任での関数作成と運用まで必要となり、開発者の負担はあまりに大きい。 単にプログラム内の文字列置換えではないかと思った方はシステムの品質保証について考え直した方が良い。アプリケーションのコードに変更を加えたら、システム全体の再テストを行わないと品質の保証なんてあったものではないだろう。しかも今回のケースでは様々な文字列でのテストも求められることからも、テストケースは実に複雑なものになるのを避けられないのである。 次回はOracle DatabaseとオープンソースのMySQLについて、同様の実験を行って対処方法を明らかにする。 |
||||||||||
|
前のページ 1 2 3 |
||||||||||
|
|
||||||||||
|
|
||||||||||
|
||||||||||
|
|
||||||||||
|
||||||||||
|
|
||||||||||
|
||||||||||

