Denali CTP3 Express Core (SQL Server Express) では LocalDB という機能が追加されています。
SQL Server "Denali" Express LocalDB
# SSDT "Juneau" をインストールしてもこそっと導入されていそうな雰囲気もありますが。
LocalDB はサービスではなく、必要に応じてプロセスが起動される SQL Server Express Core となっています。
今回はこの LocalDBを 軽く触ってみたいと思います。
参考にさせていただいたコンテンツはこちらになります。
SQL Server Express LocalDB Reference
SQL Server Express LocalDB Instance API Reference
Denali CTP3 introduces LocalDB – Think SQL Server Express crossed with SQL CE (or SQL CE grown up or SQL Express made as almost as easy CE)
SQL Server 2011 Express LocalDB Installation
SQL Server LocalDB Management Utility SqlLocalDB.exe
■LocalDB をインストール
LocalDB をインストールするために
MicrosoftR SQL ServerR コードネーム ‘Denali’, Community Technology Preview 3 (CTP 3)
MicrosoftR SQL ServerR コードネーム ‘Denali’ Express Core Community Technology Preview 3 (CTP 3)
のどちらかからインストーラーをダウンロードします。
# Denali CTP3 のインストーラーでも Express Core をインストールすることが可能となっています。
今回は CTP3 のインストーラーで Express Core を選択してインストールをしていきたいと思います。
LocalDB のインストールですが、機能の選択で [LocalDB] を選択します。
LocalDB だけをインストールする場合は、.NET Framework 3.5 SP1 / 4.0 はインストールしなくても問題ないようです。
LocalDB のインストールはインスタンス情報 / 照合順序 / データファイル / 管理者アカウントの設定は必要なく完了します。
LocalDB に必要となるファイルは [C:Program FilesMicrosoft SQL Server110LocalDB] にインストールされます。
# 単純に配置しているだけでなくレジストリも設定していますので XCOPY でファイルを動かせば他の環境でも使用できるというものではなさそうです。
ファイルサイズも 147MB 程度とかなりコンパクトになっています。
■LocalDB に接続する
LocalDB はサービスではなく必要に応じて SQL Server のプロセス (sqlservr.exe) が起動してデータベースをホストする形式で動作します。
そのため、SQL Server のサービスはインストールされません。
# SQL Server VSS Writer はインストールされるようですが。
LocalDB の管理ですが、コマンドラインの管理ツールである [SQLLOCALDB.exe] を使用します。
この EXE ですが、[C:Program FilesMicrosoft SQL Server 110ToolsBinn] に格納されています。
# インストール後 PATH に上記のディレクトリが追加されているはずです。
この EXE の詳細については SQL Server Express LocalDB Reference に記載されています。
LocalDB にもインスタンスの概念があり、この EXE を使用してインスタンスの作成 / 削除 / 開始 / 停止といった作業を実施することができます。
まずはテスト用のデータベースを作成したので、インスタンスを作成したいと思います。
インスタンスの作成には以下のコマンドを使用します。
sqllocaldb create "<インスタンス名>" |
つづいて、インスタンスの情報を確認してみます。
sqllocaldb info |
指定したインスタンスが作成されていることが確認できますね。
[v11.0] は既定で自動作成されるインスタンスになるようです。
p>
インスタンスの詳細な情報を見るためには以下のコマンドを実行します。
sqllocaldb info <インスタンス名> |
インスタンスの詳細な情報が表示されました。
インスタンスの作成時に [-s] を指定すると作成後に起動した状態にできるのですが、今回は手動で起動してみます。
sqllocaldb start <インスタンス名> |
状態が実行中になり、接続するための名前付きパイプの情報が表示されていますね。
インスタンスを Start したタイミングで SQL Server のプロセスが起動します。
それでは、この名前付きパイプを使用して接続をしてみたいと思います。
SQLCMD でも SSMS のどちらでも接続できるのですが、今回は SSMS で接続をしてみます。
サーバー名に先ほど取得した名前付きパイプを指定することで接続ができます。
後の管理は通常の SQL Server Express Core を使用する場合と変わりません。
LocalDB のシステムデータベースのファイルですが、[C:Users<ユーザー名>AppDataLocalMicrosoftMicrosoft SQL Server LocalDBInstances<インスタンス名>] に格納がされるようです。
細かくは見れていないのですが、ベースになるシステムデータベースは、[C:Program FilesMicrosoft SQL Server110LocalDBBinnTemplates] に格納されているものが使われているのかなと思っています。
ちなみに照合順序は、[SQL_Latin1_General_CP1_CI_AS] のようです。
■LocalDB は手動で起動させる必要はありません
先ほどは手動で LocalDB を起動しましたがアプリケーションから利用する場合このようなことを行うのは面倒ですよね。
LocalDB は必要なタイミングで自動で起動しますので、明示的に手動で起動する必要はありません。
アプリケーションから LocalDB に接続をする場合は、接続先のサーバーを以下のように指定します。
[(localdb)<インスタンス名] の形式ですね。
この形式で指定することで起動していない LocalDB にも接続が可能となっています。
SSMS では手動でインスタンスを起動して、名前付きパイプを指定しないとうまく接続ができなかったのですが、SQLCMD であれば以下のような指定でインスタンスを事前に起動していなくても接続が可能です。
アプリケーションを開発している方だといろいろと面白い使い方ができるかもしれないですね。
調べると奥が深そうな機能ですが、まずはさわりの部分だけ投稿してみました。
[…] 以前、Denali CTP3 Express Core の新機能 LocalDB を触ってみる という投稿をしました。 […]
LocalDB の共有名を使用してみる « SE の雑記
6 12月 11 at 19:41
[…] is My Database?Local Data OverviewLocalDB の共有名を使用してみる – SE の雑記Denali CTP3 Express Core の新機能 LocalDB を触ってみる ≪ SE の雑記SqlLocalDB UtilitySQL Server LocalDB Management Utility SqlLocalDB.exeタグ: LocalDB, SQL Server […]
蒼の王座・裏口 » SQL Server 2012 Express LocalDBのまとめ
3 1月 12 at 15:21
[…] Denali CTP3 Express Core の新機能 LocalDB を触ってみる […]
SQL Server 2012 Express LocalDB « あきひさの生活
10 3月 12 at 11:15
[…] 以前、Denali CTP3 Express Core の新機能 LocalDB を触ってみる という投稿を書いてみたのですが、DB の移行に関しては書いていなかったので少しまとめてみたいと思います。 […]
SQL Server LocalDB にデータベースを接続 « SE の雑記
16 12月 12 at 00:11