Microsoft SQL Server データベースファイルを扱う

SQL Server には、実はローカルファイル(*.mdf)を直接扱う機能があります。

Visual Stuido で WEBアプリケーションを作った時に、ログイン用のデータベースが、App_Data フォルダに勝手に作られますよね。そのファイルです。

実は、このファイル、SQL Server Express Edition でしか動きません。

AttachDbFilenameとSQL Server Express EditionとVisual Studio 2005の微妙な関係
http://blogs.wankuma.com/naka/archive/2005/08/14/17986.aspx

なので、このままサーバー環境に持って行くと、

ログイン機能が動かないッ!!!

ってなオチになるわけですが … まあ、開発環境で試す&Express Edition でお手軽にDB開発をする分には十分な機能を持っています。

さて、

このローカルファイル、どうやって新規に作ればいいか?と考えたわけですが、う~ん、なんかその手のツールが見つからない&提供されていない、と悩んでいたのですが、

簡単なことで、ログイン用の aspnetdb.mdf をコピーするだけでOKでした。

20100805_03.jpg

Visual Studio 2010 でのサーバーエクスプローラもこの通り

「Microsoft SQL Server データベースファイル」を選択して、

20100805_05.jpg

コピー元のaspnetdbが持っているテーブルをばしばし消して、新しいテーブルを追加すればOKです。

20100805_04.jpg

ただし、難点があって、この機能は Express Edition 限定なので、

Microsoft SQL Server Managerment Studio からは接続できないというオチが。。。

なので、テーブル作成やらデータ挿入やらは、Visual Studio 上でやらないといけません。ちと面倒ですね。

追記 2010/08/06

このデータベースファイルを扱う場合、SQL Server 2008 R2 で作成したファイルは、当然 R2 以上の Express Edition がインストールされていないと駄目です。

Visual Studio 2010 をインストールしただけだと、SQL Server 2008 R0(無印)となるので、R2 にアップグレードしてしまった場合は、MDFファイルをコピーするときに注意が必要です。って、無印のほうを使わないと駄目。ちなみに、無印でコピーしたものは、R2で問題なく使えます。

カテゴリー: 開発 パーマリンク