Visual Studio 2019と開発用DB(LocalDB)

Visual Studio 2019でのASP.NET Coreを使ったシステム開発の標準化を検討している。
開発工程では技術検証、新機能向けのテーブル定義の検討、単体試験等を目的として、開発者が自由に使用できるローカルのデータベースが望まれる。ここでは、Visual Studio 2019でASP.NET Coreを開発する際に自動的に組み込まれる”SQL Server Express LocalDB”の概要や簡単な操作例を説明する。

Visual Studio の開発用データベース

  • Visual Studio 2019のインストール時に指定できるワークロードで「ASP.NET と Web 開発」を選択することで「SQL Server Express LocalDB エンジン」がインストールされるので、こちらを利用します。
  • Visual Studio付属の[SQL Server オブジェクト エクスプローラー]ビューウインドウを使用することで、データベース接続が可能です。このウインドウを使って、テーブル作成、データ編集、クエリ実行等の基本的な操作を行えます。
  • SQL Server Express LocalDB エンジンの概要は次の通りです。
    • 「SQL Server Express LocalDB」はSQL Server Expressエディションの一部であり、アプリケーション開発者向けの軽量のSQL Serverデータベースです。開発者向けのものであり、リッチな構成・管理ツールは付属しませんが、インストールが簡単ですぐに使用できます。
    • SQL Server Express WebLog“によると、対して2つのニーズがあったそうです。これらを無理にSQL Server Expressに詰め込むより、ExpressとExpress LocalDBに分離する方式を採用したそうです。
      1. 無償版SQL Server: インストール、管理、プログラミングに関して他のエディションと100%互換があり、かつ無償である。勉強やトレーニング、本番環境の縮小版として使用したい。
      2. 開発用SQL Server: 本番でSQL Serverを使用する想定のアプリケーション開発で使用したい。(具体的な要件として、軽量・シンプルで管理を必要とせず、非管理者ユーザで実行できる、等)
    • 「SQL Server Express LocalDB エンジン」はSQL Server Expressの一部であるため、SQL Server Expressのインストーラからもインストール可能です。

使用方法

データベースインスタンスへの接続

SQL Server オブジェクト エクスプローラーウインドを使って接続を確認します。

  1. Visual Studio 2019の[表示]-[SQL Server オブジェクト エクスプローラー]をクリックする。
  2. 表示されたウインドウで各種の操作が可能です。
    データベースインスタンスとして、MSSQLLocalDBとProjectV13の2つがありますが、アプリケーション開発ではMSSQLLocalDBを使用します。
    (ProjectV13は”SQL Server Data Tools(SSDT)“というDBツールで使用するインスタンスです。)

データベースの作成

“データベース”を右クリックして[新しいデータベースの追加]をクリックします。

クエリの実行例

“(localdb)\MSSQLLocalDB”インスタンスを右クリックし、[新しいクエリ]をクリックすることで、クエリ実行ウインドウを表示できます。

クエリ実行ウインドウでのデータベースやテーブルの作成例です。
(既定の宣言で作成したデータベース・テーブルではvarcharで日本語が文字化けしてしまいます。本来であればnchar, nvachar型を使用するべきかもしれませんが、ここでは”COLLATE Japanese_CI_AS”を指定してvarcharで日本語を使用できるようにしています。)

GUIの使用例

SQL Server Management StudioのようにGUIでデータベースオブジェクトを右クリックし、データベースの作成、テーブル定義の変更、データ編集ができます。


接続文字列の確認

SQL Server オブジェクト エクスプローラーウインドで、対象のデータベースのプロパティを表示して、接続文字列を確認できます。

なお、前述の例で作成したデータベースへの接続文字列は次のようになります。

Data Source=(localdb)\MSSQLLocalDB;Initial Catalog=test;Integrated Security=True;Connect Timeout=30;Encrypt=False;TrustServerCertificate=False;ApplicationIntent=ReadWrite;MultiSubnetFailover=False

インスタンスの新規作成方法

次のようにLocalDB付属のSqlLocalDBコマンドを使用して、インスタンスを追加できます。
exeの場所は、私の環境の場合は”C:\Program Files\Microsoft SQL Server\130\Tools\Binn\SqlLocalDB.exe”でした。

(Visual Studioで作成したインスタンスを参照する場合)
[SQL Server オブジェクト エクスプローラー]の[SQL Server]を右クリックし、[SQL Serverの追加]をクリックします。
表示された[接続]画面で、[ローカル]にある作成したインスタンスを選択します。

参考

LocalDBのインストール方法

Visual Studio 2019のインストール時に指定できるワークロードで、「ASP.NET と Web 開発」や「データの保存と処理 」を選択することで「SQL Server Express LocalDB エンジン」がインストールされます。
(インストールされていない場合、後からVisual Studio 2019のインストーラを起動し、「変更」にて選択できます。)

[個別のコンポーネント]で個別に指定してインストールすることもできます。

データベースファイルの保存場所

データベースのファイル群の既定の保存場所は次の場所になります。

C:\Users\(ユーザ名)\AppData\Local\Microsoft\Microsoft SQL Server Local DB\Instances\MSSQLLocalDB

参考リンク