2013/04/15

Office 365 Access アプリ -19- 照合順序を変更する

Office 365 / Access アプリで使用される SQL Azure データベースの照合順序を変更するチャレンジ。結果としては実現していると思われるのだけど サポートされる方法ではないと思う。

  データベースの照合順序はAccess アプリを作成した時点の[サイトの設定]→[地域の設定]の内容が採用される。再確認していないが、[並び替え順序]が"日本語"になっていれば、"Japanese_XJIS_100_CI_AS_KS_WS"となっているはず。そもそも照合順序が違う事態にならなければよいのだけれど、そうもいかない場合もある。素敵な サンプル アプリがあってもそれが en-US な Access アプリであれば作成された時の照合順序が使用されてしまうから、おそらく"Latin1_General_100_CI_AS_KS_WS"になるはず。
  この Access アプリを Office 365上だけで使用する分には大きな影響はなくてそこそこ問題なく使えるはず。レコードをソートしたときの順序が異なる場合があるくらいだろうか。ただし、デスクトップ上のAccess ファイルから直接 SQL Azureに接続した場合には、デスクトップ上のクエリでの抽出結果は意図しないものになる場合などがある。どうしてもこれを避けたいとして、SQL Azure データベースの照合順序を変更するときどうすればよいか調査を行った。

 まず、Office 365/SharePoint もしくは、Access 上で照合順序を変更することはできない。また、SSMS でSQL Azure 上のデータベースを変更することもできない。基本的には[地域の設定]に基づいて設定される内容だからそのような仕様なのだろう。やむを得ないので少し乱暴だがアプリ パッケージ(.app)を直接編集してみる手順を試す。
  アプリ パッケージは、デスクトップ上の Access で取得する。


  ここで取得できるアプリ パッケージは zip アーカイブ なのでその内容を確認することは可能なのである。そこで直接編集を行ったアプリ パッケージをアップロードすることで、使用したい照合順序が適用されるAccess アプリ に変更してみる算段。


  で、実際に編集した個所については以下の通り。

 アプリ パッケージ(.app)
   ├ appdb.xml
   └ appdb.dacpac
     ├ model.xml
     └ Origin.xml

appdb.xml / model.xml
  先頭のほうに照合順序を指定している要素があるので変更。1か所づつ。
Origin.xml
  Checksum要素の値を変更した model.xml のファイル ハッシュ値(SHA-256)に変更。

  確認は、SSMS などで DATABASEPROPERTYEX(DB_NAME(), 'Collation') とか、実際に試すaccess2010 SQL Azureいってみようか -16- などで。なお、変更後の動作について、私は保証することはありません。

0 件のコメント: