SQL Server 2012 では LocalDB という機能が追加されました。
SQL Server 2012 Express LocalDB
MicrosoftR SQL ServerR 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] で確認することができます。
インスタンスのデータベースファイルは [C:Users<ユーザー名>AppDataLocalMicrosoftMicrosoft SQL Server Local DBInstances<インスタンス名>] に格納されています。
SQL Server の実行ファイルとしては、[C:Program FilesMicrosoft SQL Server110LocalDBBinn] の [sqlserver.exe] が使用されています。
これらの構成がわかればあとは通常の SQL Server と同じ感覚で使用できるかと。
接続する場合は、SSMS で [(localdb)<インスタンス名>] で接続をすることができます。
LocalDB は開発時に SQL Server Express に置き換わることがあると思いますので、今まで使用していたデータベースを LocalDB のインスタンスに移したいことがあると思います。
その場合は、通常の SQL Server のデータベースの意向と同じようにアタッチ / デタッチ等でデータベースを移行することができます。
今回はデタッチで他のインスタンスから切り離されたデータベースをアタッチしてみたいと思います。
LocalDB のインスタンスはログインしているユーザーをプロセスの起動ユーザーとして使用されますので、そのユーザーがアクセスできるディレクトリであれば、データベースのファイルを配置する場所は問題ないかと思います。
先ほど紹介したインスタンスのデータベースファイルが格納されるユーザープロファイル内のディレクトリにアタッチしたいファイルを配置し、そこをアタッチする際のデータベースファイルのパスとして指定すると以下のように見えます。
あとは、アタッチするデータベースの mdf / ndf / ldf を選択すれば、LocalDB に既存のデータベースをアタッチして使用することができます。
ユーザープロファイルでないディレクトリをしてした場合、SQL Server のデータベースのファイルが存在していても表示がされませんでした。
ただし、表示がされていないだけでファイル名を直接指定するとアタッチすることはできるようです。
データベースのエントリは LocalDB のインスタンス用の master に書き込まれていますので、再起動してもアタッチした内容は有効になっていました。
軽量な SQL Server が通常の感覚と同じように使用できるというのは良いですね。
[…] http://sqlserverについて勉強してみよう https://sqlserverにリモート接続 https://blog.engineer-memo.com/2012/12/16/sql-server-localdb SQL Server Express無償版3つの制限各エディションの違い […]
【自分メモ】SQL Serverについてまとめてみた | TALICO
21 5月 21 at 01:49