LocalDBとは?
SQL Server LocalDBはSQL Server Expressのオプションとしてインストール可能なコンポーネントで、ローカルでのテスト用にインストールすることが可能である。
SQL Server Expressとの違いは?
単一のDBしか動かすことができないが、実行時にデータベースファイル(mdfファイル)を指定することができるため、単体テスト用のDBを配布できることが特徴。
インストール方法
前述したとおり、SQL Server Expressのオプションとしてインストールするほか、Visual Studio 2019のインストール時に「 ASP.NET と Web 開発」のワークロードを選択していれば、機能の一部としてインストールされる。
追加でインストールする場合は、以下のようにVisual Studioインストーラーから個別コンポーネントとして選択。
また、以下の場所からインストーラーをダウンロードすることも可能。
https://docs.microsoft.com/ja-jp/sql/database-engine/configure-windows/sql-server-express-localdb?view=sql-server-ver15
接続方法
SQL Server Management Studio(SSMS)から接続可能。有効なインスタンス名はコマンドプロンプトでsqllocaldb infoと打ち込むと確認することができる。以下の例ではMSSQLLocalDB
SSMSの接続画面では、(SQL認証を利用する場合)上記のインスタンス名を用いて以下のように指定すればよい。
なお、最初はsaユーザーが無効になっている場合があるので、saユーザーを利用する場合は「セキュリティ」→「ログイン」でsaユーザーを選択し、ログインを有効化する必要がある場合がある。
DBのデタッチとアタッチ
LocalDBで利用しているデータベースをSQL Serverからデタッチしたい場合は、SSMSでデータベースを右クリックから「タスク>デタッチ」で行うことができるが、再度アタッチする場合にはSSMSからだとデータベース名をうまく復旧できないケースがあるので、以下のコマンドラインをSSMSで実行したほうが確実である。
CREATE DATABASE MyAdventureWorks
ON (FILENAME = 'C:\MySQLServer\AdventureWorks_Data.mdf'),
(FILENAME = 'C:\MySQLServer\AdventureWorks_Log.ldf')
FOR ATTACH;
この際、ログファイルの指定はなくても大丈夫である。