AccessでSQL Server 2012 Express LocalDBを使う時の最少構成

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を作成

  1. システムデータソースの追加で、「SQL Server Native Client 11.0」を選択。
  2. 名前は任意。
  3. 「サーバー」には、「(localdb)\v11.0」と手入力。
  4. Windows認証を選択。
  5. 「既定のデータベース」をドロップダウンし、「master」を選択。
  6. OKで送り、テスト接続をしてみる。
  7. 無事につながることを確認して作成終了。

この作業をすることにより、初めて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ファイルを使う事です。

  1. メモ帳を開き、空白のまま名前を付けて保存をします。
  2. 「ファイルの種類」をすべてのファイルにし、「hogehoge.UDL」などとし、デスクトップに保存。
  3. 作成したファイルを開きますと、「データリンクプロパティー」になります。
  4. プロバイダーで「SQL Server Native Client 11.0」
  5. サーバー名は、「(localdb)\v11.0」と手入力。
  6. ログオン情報は、自分の場合、WinNT認証を使用しました。
  7. 「データベースファイルを・・・」にチェックし、「ファイル名を使用する」でコピーしたmdfファイルを指定。
  8. 接続テストをクリックして、接続を完了させます。

これで、コピーしたmdfファイルとの関連付けが出来ました。

4:改めて、ODBCデータソースアドミニストレーターを立ち上げ、開発環境と同じDSNを作成
この時、masterへの接続を定義したODBCファイルを削除しておきます。あとはAccessファイルを準備し、接続できることを確認すればOKです。

注意点として、AccessRunTimeには「リンクテーブルマネージャー」がありません。リンクを張りなおす必要が出てくるかと思いますので、別途そのあたりのコードをAccessファイル側に実装する事が必要でしょう。


初めからVisualStudioでデータベースアプリを作ってしまえば、アタッチ等の操作も内部コードで済ませられます。でも、Access + LocalDBという組み合わせも悪くないですね。

これまではSQLServerのExpress版か、もしくはCompactエディションを使う必要がありました。
今回のLocalDBの登場で、比較的軽量、かつ機能が充実したテスト環境が作れるというものです。

AccessとVisualStudioの大きな違いは、「DataGridView」にあると思っています。見栄えのある、自由度の高いデザインを手軽に行えるのは、フロントエンドにAccessを使う強い動機づけとなります。特に、タッチパッドを念頭に置いた開発を行おうとすると、その事を感じます。

 

文章中で便宜上「本番環境」と表現していますが、「最小構成でのテスト環境を構築するテスト」を行う上での本番という事です。

コメント

タイトルとURLをコピーしました