SQL Server 2012 Express LocalDBへマイクロソフトAccess(accdb)から接続の続きです。
今回は実際にインストールし接続するまでの手順を追ってみたいと思います。
AccessでSQL Server 2012 Express LocalDBを使う
本番環境に必要なもの
- SqlLocalDB.msi
- sqlncli.msi
- AccessRuntime
- 開発環境で作成したmdfファイルとldfファイル
インストールから接続まで
インストールから接続までを順番に説明します。
①SQL Server 2012 Express LocalDBをインストール
ファイルはこちら。Microsoft SQL Server® 2012 Express。このうち、JPN\x86\SqlLocalDB.msiのみダウンロード(32bitの場合)インストール等の説明はこちら。本番環境へインストールします。
②SQLServer NativeClient11(sqlncli.msi)をインストール
自分はVisualStudio2012のインストールディスクから取り出しました。
MicrosoftDownloadCenter「Microsoft SQL Server® 2012 SP1 用 Feature Pack」ダウンロードページ内にもありました。
③LocadDBを使用できるようにする
以下、マイクロソフトの説明
あるコンピューターでユーザーが初めて LocalDB に接続しようとする場合、自動インスタンスが必ず作成され開始されます。
しかし、最小構成にこだわるために、本番環境ではSSMSやVisualStudio等はインストールしません。どうにかして、アタッチして、インスタンスを開始する必要があります。そこでODBCとUDLファイルを使用します。
1:ODBCデータソースアドミニストレーターを立ち上げ、DSNを作成
- システムデータソースの追加で、「SQL Server Native Client 11.0」を選択。
- 名前は任意。
- 「サーバー」には、「(localdb)\v11.0」と手入力。
- Windows認証を選択。
- 「既定のデータベース」をドロップダウンし、「master」を選択。
- OKで送り、テスト接続をしてみる。
- 無事につながることを確認して作成終了。
この作業をすることにより、初めてLocalDBへのアタッチが試みられ、インスタンスの作成が開始します。以下のパスに、インスタンスが作成されたはずです。(AppDataは隠しフォルダです。)
C:\Users\AppData\Local\Microsoft\Microsoft SQL Server Local DB\Instances
2:mdfファイルとldfファイルを本番環境にコピーする
自分はC:\Users\\Documents\の中にフォルダを作り、コピーしました。
3:UDLファイルを作成し、作成済みデータベースとインスタンスとの関連付けをしてあげる
インスタンスがmdfファイルを勝手に認識してくれるわけではありません。こちらもアタッチ作業が必要になってきます。masterデータベースはシステムデータベースなので(localdb)\v11.0への接続を試みれば読み込もうとしてくれます。SSMSやVisualStudiなどが使えない以上、サーバーに作成したmdfファイルを認識させるにはどうするか。簡単なのはUDLファイルを使う事です。
- メモ帳を開き、空白のまま名前を付けて保存をします。
- 「ファイルの種類」をすべてのファイルにし、「hogehoge.UDL」などとし、デスクトップに保存。
- 作成したファイルを開きますと、「データリンクプロパティー」になります。
- プロバイダーで「SQL Server Native Client 11.0」
- サーバー名は、「(localdb)\v11.0」と手入力。
- ログオン情報は、自分の場合、WinNT認証を使用しました。
- 「データベースファイルを・・・」にチェックし、「ファイル名を使用する」でコピーしたmdfファイルを指定。
- 接続テストをクリックして、接続を完了させます。
これで、コピーしたmdfファイルとの関連付けが出来ました。
4:改めて、ODBCデータソースアドミニストレーターを立ち上げ、開発環境と同じDSNを作成
この時、masterへの接続を定義したODBCファイルを削除しておきます。あとはAccessファイルを準備し、接続できることを確認すればOKです。
注意点として、AccessRunTimeには「リンクテーブルマネージャー」がありません。リンクを張りなおす必要が出てくるかと思いますので、別途そのあたりのコードをAccessファイル側に実装する事が必要でしょう。
初めからVisualStudioでデータベースアプリを作ってしまえば、アタッチ等の操作も内部コードで済ませられます。でも、Access + LocalDBという組み合わせも悪くないですね。
これまではSQLServerのExpress版か、もしくはCompactエディションを使う必要がありました。
今回のLocalDBの登場で、比較的軽量、かつ機能が充実したテスト環境が作れるというものです。
AccessとVisualStudioの大きな違いは、「DataGridView」にあると思っています。見栄えのある、自由度の高いデザインを手軽に行えるのは、フロントエンドにAccessを使う強い動機づけとなります。特に、タッチパッドを念頭に置いた開発を行おうとすると、その事を感じます。
文章中で便宜上「本番環境」と表現していますが、「最小構成でのテスト環境を構築するテスト」を行う上での本番という事です。
コメント