SQL Server 2012 Express LocalDBのまとめ

投稿者: | 1月 3, 2012

SQL Server 2012 Expressエディションには2種類の製品が用意されています。従来通りのSQL Server 2012 ExpressとSQL Server 2012 Express LocalDBです。
今回は、SQL Server 2012 Express LocalDBについて調べたことをまとめてみたいと思います。

LocalDB RC0のインストーラー

SQL Server 2012 Express LocalDB RC0のインストーラーは、「ここ」からダウンロードできます。

RC0からインストーラーが改善されて、とてもシンプルで、とても小さいインストーラーとなりました。
32MBのMSIパッケージで、30秒ほどでLocalDBをインストールすることができます。

サイレントインストールに対応しており、LocalDBのサイレントインストールコマンド例は次のようになります。

msiexec /i SqlLocalDB.msi /qn IACCEPTSQLLOCALDBLICENSETERMS=YES

32ビット版LocalDBは、64ビット版Windowsでの動作をサポートしていません。また、LocalDBパッケージは、32ビット版も64ビット版も同じファイル名SqlLocalDB.msiで、MSIファイル名の変更をすることはできません。

LocalDBの概要

LocalDBは開発者向けに開発された製品です。
とても簡単にインストールでき、管理をする必要が無く、SQL Server Expressと同じT-SQL言語・プログラミングインターフェイス・プロバイダーを使用できます。
LocalDBはアプリケーション開発環境を対象にしたときのニーズを満たし、開発者は使用し続けることができ、とても素晴らしい組み込みデータベースです。

  • LocalDBは、SQL Server Expressと他のエディションと同じsqlserver.exeを使用します。アプリケーションは、接続するために同じクライアントプロバイダー(ADO.NET、ODBC、PDOなど)を使用でき、SQL Server Expressに提供されているのと同じT-SQLを使用してデータ操作ができます。
  • LocalDBは、マシン上に(SQL Serverのメジャーバージョン一つにつき)一つだけインストールされます。複数のアプリケーションが複数のLocalDBプロセスを開始することができますが、同じディスク上から同じsqlserver.exe実行ファイルから開始します。
  • LocalDBは複数のデータベースサービスを作成することはできません。LocalDBプロセスは、必要に応じて自動的にスタートし、ストップします。アプリケーションは、「Data Source=(localdb)\v11.0」に接続し、LocalDBプロセスは、アプリケーションの子プロセスとしてスタートします。このプロセスに最後に接続してから数分後、プロセスを閉じるためプロセスをシャットダウンします。
  • LocalDBは、AttachDbFileNameプロパティでの接続をサポートしており、開発者はデータベースファイルを指定することができます。LocalDBは指定したデータベースファイルをアタッチし、コネクションが作成されます。

背景

SQL Server Expressには、2つの異なるニーズがあります。

一つ目は、SQL Serverの無料エディションであること。SQL Server ExpressはほかのエディションのSQL Serverとインストール、管理、プログラミングで100%の互換性があります。SQL Server Expressは、学習、トレーニング、(DB容量10GB未満の)小さな製品データベースに使用することができます。SQL Server Expressからほかのエディションへのアップグレードは、ライセンスキーを登録するだけで実行でき、インストールは必要ありません。
二つ目は、SQL Server Expressは、SQL Serverを対象にしたアプリケーション開発に使用できるSQL Serverエディションです。ほかのSQL Server と100%の互換性を保ちながら、とても小さく、シンプルで、設定や管理が必要なく、管理者ユーザでも無く実行できることが期待されています。

SQL Expressは、両方の役割を担当できるように調整してきました。しかし、SQL Serverと互換性を保ちながら、小さくシンプルをじつげんすることは困難でした。そこで、アプローチを変え、開発者向けのSQL Express版、つまりAPIレベルでSQL Serverと互換性を持ち、シンプルなLocalDBを提供することにしました。

LocalDBインスタンス

LocalDBが必要なDLLはすべて一か所にまとめてインストールされます。
初期設定では、「C:\Program Files\Microsoft SQL Server\110\LocalDB\Binn」に配置されます。

(ADO.NETやODBC、PDOのような)クライアントプロバイダーから「Data Source=(localdb)\v11.0」に接続します。プロバイダーは最初にLocalDBインスタンスが起動しているかを確認します。すでに開始している場合は、アプリケーションに接続します。起動していない場合は、LocalDBインスタンスを起動してから接続します。
WindowsログオンユーザでLocalDBインスタンスを起動し、ほかのユーザのインスタンスとは分離されています。

LocalDBの接続文字列は、「Data Source=(localdb)\v11.0;Integrated Security=true」です。LocalDBに接続するには、SQL Server 2012のODBCやOLEDB、または.NET Framework 4 Update 4.0.2のADO.NETを使用する必要があります。

データベースファイル

LocalDBの接続文字列は、AttachDbFileNameプロパティをサポートしており、接続プロセス時にデータベースファイルをアタッチすることができます。

C:\MyData\Database1.mdfにデータベースファイルが配置されているとすれば、開発者は接続文字列を次のように指定します。

Data Source=(localdb)\v11.0;Integrated Security=true;AttachDbFileName=C:\MyData\Database1.mdf

LocalDBのシステムデータベースファイルは、隠しディレクトリのAppData「C:\Users\<user>\AppData\Local\Microsoft\Microsoft SQL Server Local DB\Instances\LocalDBApp1\」に格納されます。

ユーザデータベースは、特に配置場所を指定しない場合は、My Documentsディレクトリ「C:\Users\<user>\Documents\」直下に作成されます。

データベースの作成

次のようなクエリを実行します。

create database foo

My Documetフォルダーを参照すると、foo.mdfとfoo_log.ldfファイルが作成されていることを確認できます。また、データベースファイルの配置場所を指定したい場合は、次のようなクエリを実行します。

create database foo on (name='foo', filename='c:\DBs\foo.mdf')

LocalDBとSQL Server Express

LocalDBは、SQL Server Expressを置き換えるものではありません。

SQL Server Expressラインナップに追加されるものです。LocaDBは開発者向けで、SQL Server ExpressはSQL Serverの無料エディションであり続け、完全な互換性があり、簡単に上位エディションへアップグレードすることができます。

LocalDBとSQL Server Compact

「小さく、シンプルなデータベースで、ライトウェイトなインストール・データベースファイルへの接続」

これだけを見ると、SQL Server Compactを使用している開発者には同じに見えるかもしれません。この同一性はアクシデントではなく、LocalDBの目的はSQL Server Compactと同様に簡単に使用でき、一方でパワフルで、SQL Serverと完全な互換性があります。

LocalDBとSQL Server Compactの差異

  • 実行モード:SQL Server Compactはin-proc DLLですが、LocalDBは分離プロセスです
  • ディスク使用量:SQL Server Compactバイナリは4MBですが、LocalDBは140MBです。
  • 特徴:SQL Server Compactはクエリ機能のようなコアのRDBMS機能を提供しますが、LocalDBはストアドプロシージャ、幾何学、地理データ型のようなリッチな機能セットを提供します。

SQL Server Management Studioでの操作

SQL Server Management StudioとLocalDBと.NET Framework 4をインストールします。さらに、.NET Framework 4.0.2へアップデートします。SSMSから接続するさいには、図のように「(localdb)\v11.0」と指定します。

SNAGHTML2771a5bf

SSMSからデータベースの作成

SSMSからデータベースを作成するために、データベース作成ウィザードからデータベースを作成します。

情報を入力し、OKボタンをクリックするとエラーが発生します。

これは現時点でのバグです。

回避策としては、データベースの配置場所を「My Documents」にすることです。

 

参考情報

SQL Server 2012 Express LocalDBのまとめ」への3件のフィードバック

  1. ピンバック: 【ASP.NET MVC5】チュートリアルの Data Source には MSSQLLocalDB を指定すること!【Visual Studio 2015】 | oki2a24

  2. あきたま

    参考にさせていただきました。ありがとうございました。

    返信
  3. ピンバック: ExpressWebからWinserverに引っ越しました[非推奨案件] | YouZeeRaw-Blog

コメントを残す

メールアドレスが公開されることはありません。

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください