SQL Server 2005 ExpressをJET DBのように使う

以前にも書いたLink ように、MS SQL Server 2005は、データベース1個を1つのmdfファイル(正確にはトランザクションログとの二つ)に収め、好きな所に配置して運用ができます。同じMSのJET DB(AccessのDBエンジン)のmdbファイルみたいな運用が考えられるわけで、これを便利と考えられる人には結構便利ですが、セキュリティーや安全性上ずさんだといえばそう。

ただmdbほどお手軽ではなく、開く前にmdfファイルをSQL Server 2005に登録しないといけません。この登録作業がAttach、登録解除がDetatchです。Attachは
  • SQL Server Management Studio (Express)Link でツリーのDetabasesを右クリック、Attachで登録する
  • ADO/ADO.NETのConnection StringにAttachDbFilename=(mdfファイル名)を指定して接続
などの方法があります。

が、この処理はCREATE DATABASE/CREATE ANY DATABASE/ALTER ANY DATABASE の権限を持っているユーザーしかできませんLink 。最も分かりやすいこの権限を持ったユーザーは管理者(Administrator)です。つまり、制限ユーザーにとってはあまりお手軽ではない。またAttachDbFilenameの方法を使った場合、Detactchしないと次の接続時にすでにAttachされているファイルをまたAttachDbFilenameしようとしたとして、エラーになるそうです。

これの対策として、User InstanceLink を使う方法があります。これはそのユーザー専用の仮想的なデータベースインスタンスを作ることで、そのインスタンス上だけではユーザーは特権的振る舞いができるようにするもののようです。しかもデータベースをシャットダウン後は自動的にDetatchされるので、次回接続時に二重Atatchのエラーも出ません。

使い方は簡単。Connection Stringにuser instance=trueを指定するだけ。
Provider=SQLOLEDB.1;
Data Source=.¥SQLEXPRESS;
Integrated Security=true;
attachDbFilename=C:¥TEST.MDF;
User Instance=true
ただし使用に制限があります。
  • SQL Server 2005 Expressにしか使えない(上位有償エディションはだめ)
  • ADO.NET上でしか使えない

で私、SQL Server 2005 Express+Open OfficeLink Baseで無料でAccessの代わりになる環境ができないかと思ったわけです。Open Office Baseには既存のデータベースに接続→ADOがありまして、Connection Stringを指定すればSQL Server 2005にmdfファイルを指定して接続できるはず・・・だめでした。Open Office BaseはADO(Visual Studio 6時代)であって、ADO.NETじゃないみたいです。

ちなみに管理者権限なら、以下のConnection string (URL)でOpen Office Baseから接続できます。
Provider=SQLOLEDB.1;
Data Source=.¥SQLEXPRESS;
Integrated Security=SSPI;
Persist Security Info=False;
attachdbfilename=C:¥TEST.MDF;

ただし一回Attachされると次回はエラーとなりますので、attachdbfilenameをInitial Catalogに変更する必要があります。

[参考]

— posted by mu at 09:00 pm   commentComment [2]  pingTrackBack [0]

この記事に対するコメント・トラックバック [2件]

Up1. hayashi Website — 2009/04/27@14:17:37

OpenOffice2.0からHSQLDBが内臓されるようになりましたが、それでも「無料でAccessの代わりになる環境」は実現できないのでしょうか?
この問題が最終的に解決できたかどうか知らせていただけるとうれしいです。

わたしはHSQLDBをOpenOfficeが誕生する以前から利用してきました。
通常のC/Sタイプの接続に加えて、スタンドアロン接続ができるのでユーザー環境へのインストールはデータベースファイルをコピーするだけでOK!
ユーザーにデータベースを意識させずにすむのでとても重宝しています。

[短所]
・Javaが必要!
・ODBC接続できないこと!
データベース操作はすべてプログラミングする必要がありましたが、OpenOfficeの登場でこの問題もクリアされつつあるのかな?

Owner Comment mu  2009/04/27@15:59:02

この記事書いたときはまだHSQLDBの存在を知らなかったんです。OpenOfficeを使うなら、HSQLDBは使える選択だと思います。ただこれはOpenOffice Base(たぶん表示)のせいだと思いますがAccessに比べると重さを感じました。

OpenOffice Base+SQL Server(User instance)の件はこの記事書いた後、忙しくて諦めちゃいました。ごめんなさい。

データベース便利なんですけどねぇ、職場じゃ一向に普及しません。なぜそんなことをExcelでやるのと見ててもどかしくなるケースもあるのですが、彼らにはよく分からないAccess覚えるよりは良いらしくて。Excel恐るべし。

この記事に対する TrackBack URL:

設定によりTB元のページに、こちらの記事への言及(この記事へのリンク)がなければ、TB受付不可となりますのであらかじめご了承下さい。

コメントをどうぞ。 名前(ペンネーム)と画像認証のひらがな4文字は必須で、ウェブサイトURLはオプションです。

ウェブサイト (U):

タグは使えません。http://・・・ は自動的にリンク表示となります

:) :D 8-) ;-) :P :E :o :( (TT) ):T (--) (++!) ?;w) (-o-) (**!) ;v) f(--; :B l_P~ (QQ)

     

[X] [Top ↑]

T: Y: ALL: Online:
ThemeSwitch
  • Basic
Created in 0.0174 sec.
prev
2008.7
next
    1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31