SE の雑記

SQL Server の情報をメインに Microsoft 製品の勉強内容を日々投稿

SQL Server LocalDB にデータベースを接続

leave a comment

SQL Server 2012 では LocalDB という機能が追加されました。
SQL Server 2012 Express LocalDB
Microsoft® SQL Server® 2012 Service Pack 1 (SP1) Express
MSI 形式で提供されており、msiexec を使用することでコマンドラインからインストールすることも可能です。

SQL Server Data Tools で使われているこの機能ですが、サービスではなく必要時にプロセスとして起動する軽量な SQL Server Express 互換の機能となります。
# Compact Edition とは異なり SQL Server の機能を使用することができます。

以前、Denali CTP3 Express Core の新機能 LocalDB を触ってみる という投稿を書いてみたのですが、DB の移行に関しては書いていなかったので少しまとめてみたいと思います。

LocalDB ですが、SSMS から使用する場合は通常の SQL Server と同じ感覚で使用することができます。
今回は SQL Server 2012 SP1 の LocalDB を使用しています。

LocalDB も SQL Server ですのでインスタンスという概念があります。
現状、どのようなインスタンスが存在しているかは [sqllocaldb info] で確認することができます。
image

インスタンスのデータベースファイルは [C:Users<ユーザー名>AppDataLocalMicrosoftMicrosoft SQL Server Local DBInstances<インスタンス名>] に格納されています。

SQL Server の実行ファイルとしては、[C:Program FilesMicrosoft SQL Server110LocalDBBinn] の [sqlserver.exe] が使用されています。

これらの構成がわかればあとは通常の SQL Server と同じ感覚で使用できるかと。

接続する場合は、SSMS で [(localdb)<インスタンス名>] で接続をすることができます。
image

LocalDB は開発時に SQL Server Express に置き換わることがあると思いますので、今まで使用していたデータベースを LocalDB のインスタンスに移したいことがあると思います。

その場合は、通常の SQL Server のデータベースの意向と同じようにアタッチ / デタッチ等でデータベースを移行することができます。

今回はデタッチで他のインスタンスから切り離されたデータベースをアタッチしてみたいと思います。
image

LocalDB のインスタンスはログインしているユーザーをプロセスの起動ユーザーとして使用されますので、そのユーザーがアクセスできるディレクトリであれば、データベースのファイルを配置する場所は問題ないかと思います。

先ほど紹介したインスタンスのデータベースファイルが格納されるユーザープロファイル内のディレクトリにアタッチしたいファイルを配置し、そこをアタッチする際のデータベースファイルのパスとして指定すると以下のように見えます。
image

あとは、アタッチするデータベースの mdf / ndf / ldf を選択すれば、LocalDB に既存のデータベースをアタッチして使用することができます。
ユーザープロファイルでないディレクトリをしてした場合、SQL Server のデータベースのファイルが存在していても表示がされませんでした。
image

ただし、表示がされていないだけでファイル名を直接指定するとアタッチすることはできるようです。
image

データベースのエントリは LocalDB のインスタンス用の master に書き込まれていますので、再起動してもアタッチした内容は有効になっていました。

軽量な SQL Server が通常の感覚と同じように使用できるというのは良いですね。

Written by masayuki.ozawa

12月 16th, 2012 at 12:11 am

Posted in SQL Server

Tagged with

Leave a Reply

*