SQL Server Express LocalDBは、ローカルWindows開発のための軽量なSQL Serverエンジンです。 WindowsユーザーIDで動作し、オンデマンドで起動します。 LocalDBはリモートデータベースサービスではなく、LinuxやmacOSでは動作しません。
クロスプラットフォーム開発の場合は、対応可能なSQL ServerコンテナまたはリモートSQLエンドポイントを使用してください。
Microsoft.Data.SqlClient NuGetパッケージをインストールするとクライアントドライバーがインストールされ、LocalDBはインストールされません。
LocalDB をインストールする
SQL Server Expressの設定やVisual Studioインストーラーを使ってLocalDBをインストールしてください。 Visual Studioで、適切なデータ開発ワークロードまたはSQL Server Express LocalDBの個別コンポーネントを選択します。 現在のダウンロードやインストーラーオプションについては、SQL Server Express LocalDBのインストールをご覧ください。
LocalDBのインストールはエンジン、 SQLUserInstance.dll、 SqlLocalDB.exe 管理ユーティリティを提供します。
SqlLocalDB
PATHにない場合は、インストール済みのSQL Serverツールディレクトリから実行してください。
インストールしたバージョンとインスタンスをリストアップします:
SqlLocalDB versions
SqlLocalDB info
自動インスタンスへの接続
自動インスタンスはMSSQLLocalDBと名付けられ、現在のWindowsユーザーに属します。 Windows統合認証を使いましょう。 LocalDBはMicrosoft Entra認証をサポートしていません。
Microsoft.Data.SqlClientをインストールした.NETコンソールアプリケーションの場合:
using Microsoft.Data.SqlClient;
string connectionString =
@"Server=(localdb)\MSSQLLocalDB;Database=master;Integrated Security=true;Encrypt=true;TrustServerCertificate=true;";
using var connection = new SqlConnection(connectionString);
await connection.OpenAsync();
using var command = new SqlCommand("SELECT DB_NAME();", connection);
Console.WriteLine(await command.ExecuteScalarAsync());
クエリは masterを印刷します。 最初の接続は、LocalDBがインスタンスを作成または開始するため、時間がかかることがあります。 起動が接続タイムアウトを超えた場合は、インスタンスの状態を確認し、起動完了を待ってから再挑戦します。
この例は TrustServerCertificate=true付きの地方開発証明書を許可しています。 この例外は地域開発に限定してください。 リモートSQLエンドポイントの場合は、検証可能な証明書と TrustServerCertificate=falseを使用します。詳細は 暗号化と証明書検証を参照してください。
接続文字列におけるバックスラッシュ
connection-stringの値は (localdb) とインスタンス名の間にバックスラッシュが1つあります。 エスケープは値をどこに書くかによります:
| 場所 | サーバー値 |
|---|---|
| プレーンテキスト、拡張マークアップ言語(XML)構成、またはPowerShellのシングルクォート付き文字列などです。 | (localdb)\MSSQLLocalDB |
| C#の逐語的な文字列。 | @"(localdb)\MSSQLLocalDB" |
| C#の通常の文字列またはJavaScriptオブジェクト表記(JSON)文字列。 | "(localdb)\\MSSQLLocalDB" |
重ねたC#のバックスラッシュをプレーンテキストの接続文字列にコピーしないでください。
名前付きおよび共有インスタンス
アプリケーション用のローカルエンジンインスタンスを別に作りたいときは、名前付きインスタンスを使いましょう。 接続前に作成してください:
SqlLocalDB create SqlClientDev
SqlLocalDB start SqlClientDev
SqlLocalDB info SqlClientDev
この平文の接続文字列で接続してください:
Server=(localdb)\SqlClientDev;Database=master;Integrated Security=true;Encrypt=true;TrustServerCertificate=true;
異なるWindowsユーザーは同じ名前のプライベートインスタンスを持つことができます。 名前だけでは他のユーザーのインスタンスを特定することはできません。
共有インスタンスは、同じコンピュータ上の他のユーザーにもエイリアス(別名)が表示されます。 管理者は共有の設定をしなければならず、他のユーザーは適切なWindowsまたはSQLのログインが必要です。 共有しても自動的にデータベース権限が付与されるわけではありません。 共有名前空間を活用してください:
Server=(localdb)\.\<shared_instance>;Database=<database>;Integrated Security=true;Encrypt=true;TrustServerCertificate=true;
開発インスタンスは意図的に共有してください。 ローカルファイルアクセスとデータベースの権限を確認しましょう。 LocalDBの共有インスタンスを参照してください。
解説
AttachDBFilenameを使って、インスタンス所有者がアクセスできる既存のデータベースファイルを添付してください。 また、データベース名も指定してください:
Server=(localdb)\MSSQLLocalDB;Database=<database>;AttachDBFilename=C:\Data\<database>.mdf;Integrated Security=true;Encrypt=true;TrustServerCertificate=true;
絶対的なファイルパスか適切に設定された |DataDirectory| 値を使いましょう。
AttachDBFilename は、存在しないデータベース ファイルを作成しません。 エンジンはデータベースファイルのバージョンをサポートしなければならず、他のインスタンスがすでにファイルを開いていることはできません。
ファイルを Database 付する際に省略すると、アプリケーションが終了した際にデータベースはLocalDBインスタンスから削除されます。 永続的なデータベース登録を希望する場合は Database を指定します。
User Instance=true LocalDBには適用されません。 LocalDBでは MultiSubnetFailover=true を使わないでください。そのローカルネームドパイプ接続はTransmission Control Protocol(TCP)のフェイルオーバーエンドポイントではありません。
データベースとログファイルをWindowsのファイル権限で保護してください。 保護されていないデータベースファイルをコピーできる人は、それを自分が管理するインスタンスにアタッチできる可能性があります。 SQL権限はファイルシステムの保護に代わるものではありません。
プログラムによって名前付きインスタンスを作成する
適用対象: .NET Framework
.NET Frameworkアプリケーションの場合、app.configのsystem.data.localdbセクションで名前付きインスタンスとそのインストールされたLocalDBエンジンバージョンを宣言します。
Microsoft.Data.SqlClientアセンブリからMicrosoft.Data.LocalDBConfigurationSection構成セクションタイプを登録し、localdbinstancesの下にインスタンスを追加します。
Server=(localdb)\<instance>のインスタンス名と設定エントリを一致させ、コンピュータにインストールしたLocalDBエンジンバージョンを使用します。 古いドライバーアセンブリ版やエンジン版を新しいアプリケーションにコピーしないでください。
現代の.NETでは、この構成セクションを使ってインスタンスを作成していません。 開発者設定時に SqlLocalDB を使い、アプリケーションがインスタンスを管理する必要がある場合は LocalDB管理API を使いましょう。
Limitations
LocalDBはインスタンス所有者の権限で動作します。 これはローカル開発を目的としており、共有制作サービスではありません。
- LocalDBはWindows専用です。 非Windowsプラットフォーム上のマネージドネットワーキングLocalDB接続は
PlatformNotSupportedExceptionを投げかけます。 - リモート管理はサポートされていません。
- FILESTREAMおよびマージレプリケーションのサブスクライバー使用はサポートされていません。
- Service Brokerはローカルキューのみをサポートしています。
- データベースのサイズとリソース制限はインストールされているSQL Server Expressエンジンに従い、SqlClientパッケージのバージョンに従いません。
| Engine | インスタンスあたりの最大計算量 | 最大バッファプール(メガバイト単位、MB) | ギガバイト単位の最大リレーショナルデータベースサイズ(GB) |
|---|---|---|---|
| SQL Server 2022 Express LocalDB. | 1 ソケットまたは 4 コアのいずれか少ない方。 | 1,410MB。 | 10 GB。 |
| SQL Server 2025 Express LocalDB. | 1ソケットまたは4コアのいずれか少ない方。 | 1,410MB。 | 50GB。 |
SQL Server 2022およびSQL Server 2025のエディション制限をご覧ください。 LocalDBテストはMicrosoft Entra認証、リモートのトランスポート層セキュリティ(TLS)証明書検証、可用性グループのフェイルオーバー、クラウドサービスの制限を行いません。 それらは予定された展開に対して別々に行使してください。