SQL Server 2012 Express LocalDB

Microsoft SQL Server 2012 Express LocalDB は、プログラムの開発者を対象とした SQL Server Express の実行モードです。 LocalDB インストールによって、SQL Server データベース エンジンの開始に最低限必要なファイルがコピーされます。 LocalDB のインストール後に、開発者は特殊な接続文字列を使用して接続を開始します。 接続時に、必要な SQL Server インフラストラクチャが自動的に作成および開始されるため、複雑な、または時間のかかる構成タスクを行わなくてもアプリケーションでデータベースを使用できます。 開発者ツールによって、開発者は SQL Server データベース エンジンを使用して Transact-SQL コードを記述してテストすることができ、SQL Server の完全なサーバー インスタンスを管理する必要はありません。 SQL Server Express LocalDB のインスタンスは、SqlLocalDB.exe ユーティリティを使用して管理されます。 SQL Server Express SQL Server Express ユーザー インスタンスの機能は推奨されないため、代わりに LocalDB を使用する必要があります。

LocalDB のインストール

SqlLocalDB.msi プログラムは、LocalDB をインストールするために使用される主要な方法です。 SQL Server 2012 Express の SKU をインストールするときに、LocalDB を選択できます。 SQL Server Express のインストール時に [機能の選択] ページで LocalDB を選択します。 主要な SQL Server データベース エンジンのバージョンごとに LocalDB のバイナリ ファイルのインストールが 1 つだけ表示されます。 複数のデータベース エンジン プロセスを開始することができ、すべてのプロセスが使用するバイナリは同じです。 LocalDB として開始された SQL Server データベース エンジンのインスタンスには SQL Server Express と同じ制限があります。

説明

LocalDB セットアップ プログラムは、SqlLocalDB.msi プログラムを使用してコンピューターに必要なファイルをインストールします。 LocalDB はインストールされると SQL Server Express のインスタンスとなり、SQL Server データベースを作成して開くことができます。 データベースのシステム データベース ファイルは、通常は非表示になっているユーザーのローカル AppData パスに格納されます。 たとえば、C:\Users\<user>\AppData\Local\Microsoft\Microsoft SQL Server Local DB\Instances\LocalDBApp1\ です。 ユーザー データベース ファイルは、通常は C:\Users\<user>\Documents\ フォルダーのような、ユーザーが指定する場所に格納されます。

アプリケーションへの LocalDB の組み込みの詳細については、Visual Studio マニュアルの「ローカル データの概要」、「チュートリアル:SQL Server LocalDB データベースの作成」、および「チュートリアル:SQL Server LocalDB データベース (Windows フォーム) 内のデータに接続する」を参照してください。

LocalDB API の詳細については、「SQL Server Express LocalDB のインスタンス API リファレンス」および「LocalDBStartInstance 関数」を参照してください。

SqlLocalDb ユーティリティによって、LocalDB インスタンスの新規作成および LocalDB インスタンスの起動と終了が行われ、LocalDB の管理を容易にするオプションが含まれます。 SqlLocalDb ユーティリティの詳細については、「SqlLocalDB ユーティリティ」を参照してください。

LocalDB のインスタンスの照合順序は SQL_Latin1_General_CP1_CI_AS に設定され、変更することはできません。 データベース レベル、列レベル、および式レベルの照合順序は正常にサポートされます。 包含データベースは、包含データベースの照合順序によって定義されたメタデータおよび tempdb の照合順序ルールに従います。

制限

LocalDB はマージ レプリケーションのサブスクライバーとして使用することはできません。

LocalDB では FILESTREAM がサポートされていません。

LocalDB では Service Broker に対してローカル キューのみが許可されます。

NT AUTHORITY\SYSTEM などの組み込みのアカウントによって所有されている LocalDB のインスタンスに、Windows のファイル システムのリダイレクトによる管理の容易性の問題がある場合があります。代わりに、所有者として、通常の windows アカウントを使用してください。

自動インスタンスと名前付きインスタンス

LocalDB は、次の 2 種類のインスタンスをサポートしています。自動インスタンスと名前付きインスタンス。

  • LocalDB の自動インスタンスはパブリックです。 ユーザーのために自動的に作成および管理され、任意のアプリケーションから使用できます。 どのバージョンの LocalDB に対しても、ユーザーのコンピューターにインストールされている LocalDB の自動インスタンスが 1 つ存在します。 LocalDB の自動インスタンスを使用すると、シームレスなインスタンス管理を実行できます。 インスタンスを作成する必要はありません。それだけで動作します。 これにより、アプリケーションのインストールと別のコンピューターへの移行が簡単になります。 対象コンピューターに指定バージョンの LocalDB がインストールされている場合、その対象コンピューターでも同じバージョンの LocalDB の自動インスタンスを使用できます。 LocalDB の自動インスタンスのインスタンス名には特殊なパターンがあり、これは予約済み名前空間に属します。 これにより、LocalDB の名前付きインスタンスとの名前の競合を防ぎます。 自動インスタンスは、xx.x という形式の LocalDB リリース バージョン番号の前に v という 1 文字が付いた名前になります。 たとえば、v11.0 は SQL Server 2012 を表します。

  • LocalDB の名前付きインスタンスはプライベートです。 これらは、そのインスタンスの作成と管理を行う単一のアプリケーションによって所有されます。 名前付きインスタンスは他のインスタンスからの分離を可能にし、他のデータベース ユーザーとのリソースの競合を減らすことによってパフォーマンスを向上させることができます。 名前付きインスタンスは、ユーザーが LocalDB 管理 API を通じて明示的に作成するか、マネージ アプリケーションの app.config ファイルを通じて暗黙的に作成する必要があります (ただし、マネージ アプリケーションでは必要に応じて API も使用できます)。 LocalDB の各名前付きインスタンスには、LocalDB バイナリの特定のセットを指す特定の LocalDB バージョンが関連付けられています。 LocalDB のインスタンス名は sysname データ型で、最大文字数は 128 文字です (これは、名前を 16 文字の ASCII ��字から構成される通常の NetBIOS 名に制限する SQL Server の通常の名前付きインスタンスとは異なります)。LocalDB のインスタンス名には、ファイル名内で有効な任意の Unicode 文字を使用できます。 自動インスタンス名を使用する名前付きインスタンスは、自動インスタンスになります。

コンピューターの異なるユーザーが同じ名前のインスタンスを持つことができます。 各インスタンスは、別のユーザーとして実行している別のプロセスです。

LocalDB の共有インスタンス

コンピューターの複数のユーザーが LocalDB の単一インスタンスに接続する必要のあるシナリオをサポートするために、LocalDB はインスタンス共有をサポートします。 インスタンスの所有者は、コンピューター上の他のユーザーに自分のインスタンスへの接続を許可することを選択できます。 LocalDB の自動インスタンスと名前付きインスタンスの両方を共有できます。 LocalDB のインスタンスを共有するには、ユーザーがその共有名 (別名) を選択します。 共有名はコンピューターのすべてのユーザーから参照できるため、この共有名はコンピューター上で一意である必要があります。 LocalDB のインスタンスの共有名は、LocalDB の名前付きインスタンスと同じ形式です。

コンピューターの管理者だけが、LocalDB の共有インスタンスを作成できます。 LocalDB の共有インスタンスは、管理者または LocalDB の共有インスタンスの所有者が共有解除できます。 LocalDB のインスタンスを共有または共有解除するには、LocalDB API の LocalDBShareInstance メソッドと LocalDBUnShareInstance メソッドを使用するか、SqlLocalDb ユーティリティの共有および共有解除オプションを使用します。

LocalDB の起動および LocalDB への接続

自動インスタンスへの接続

LocalDB を使用する最も簡単な方法は、接続文字列 "Server=(localdb)\v11.0;Integrated Security=true" を使用して、現在のユーザーが所有する自動インスタンスに接続することです。 ファイル名を使用して特定のデータベースに接続するには、"Server=(LocalDB)\v11.0; Integrated Security=true ;AttachDbFileName=D:\Data\MyDB1.mdf" のような接続文字列を使用して接続します。

注意

あるコンピューターでユーザーが初めて LocalDB に接続しようとする場合、自動インスタンスが必ず作成され開始されます。 インスタンスの作成に時間がかかり、接続がタイムアウト メッセージで失敗する可能性があります。 この場合は、作成プロセスが完了するまで数秒待ってから再び接続します。

名前付きインスタンスの作成および接続

LocalDB では、自動インスタンスに加えて名前付きインスタンスもサポートされます。 SqlLocalDB.exe プログラムを使用して、LocalDB の名前付きインスタンスを作成、開始、および停止します。 SqlLocalDB.exe の詳細については、「SqlLocalDB ユーティリティ」を参照してください。

REM Create an instance of LocalDB
"C:\Program Files\Microsoft SQL Server\110\Tools\Binn\SqlLocalDB.exe" create LocalDBApp1
REM Start the instance of LocalDB
"C:\Program Files\Microsoft SQL Server\110\Tools\Binn\SqlLocalDB.exe" start LocalDBApp1
REM Gather information about the instance of LocalDB
"C:\Program Files\Microsoft SQL Server\110\Tools\Binn\SqlLocalDB.exe" info LocalDBApp1

上記の最後の行によって、次のような情報が返されます。

名前

"LocalDBApp1"

バージョン

<現在のバージョン>

共有名

""

所有者

"<Windows ユーザー>"

自動作成

State

実行

前回の開始時刻

<日付と時刻>

インスタンス パイプ名

np:\\. \pipe\LOCALDB#F365A78E\tsql\query

注意

アプリケーションで .NET 4.0.2 より前のバージョンを使用している場合、LocalDB の名前付きパイプに直接接続する必要があります。 インスタンス パイプ名の値は、LocalDB のインスタンスがリッスンしている名前付きパイプです。 LOCALDB# の後ろのインスタンス パイプ名の部分は、LocalDB のインスタンスが開始されるたびに変わります。 SQL Server Management Studio を使用して LocalDB のインスタンスに接続するには、[データベース エンジンへの接続] ダイアログ ボックスにある [サーバー名] ボックスにインスタンス パイプ名を入力します。 カスタム プログラムで SqlConnection conn = new SqlConnection(@"Server=np:\\.\pipe\LOCALDB#F365A78E\tsql\query"); と同様の接続文字列を使用して LocalDB のインスタンスへの接続を確立できます。

LocalDB の共有インスタンスへの接続

LocalDB の共有インスタンスに接続するには、.\ (ドット + 円記号) を接続文字列に追加して、共有インスタンス用に予約されている名前空間を参照します。 たとえば、AppData という名前の LocalDB の共有インスタンスに接続するには、接続文字列の一部として (localdb)\.\AppData などの接続文字列を使用します。 自身のものではない LocalDB の共有インスタンスに接続するユーザーには、Windows 認証または SQL Server 認証ログインが必要です。

トラブルシューティング

LocalDB のトラブルシューティングについては、「SQL Server 2012 Express LocalDB のトラブルシューティング」を参照してください。

権限

SQL Server 2012 Express LocalDB のインスタンスは、ユーザーによって作成される、ユーザー専用のインスタンスです。 コンピューター上のユーザーであれば、データベースを作成できます。データベースを作成するには、LocalDB のインスタンスを使用して、ファイルをそのユーザー プロファイルに格納し、自分の資格情報を使用して処理を実行します。 既定では、LocalDB のインスタンスにアクセスできるのは、その所有者に制限されます。 LocalDB に含まれるデータは、データベース ファイルにアクセスするファイル システムによって保護されます。 ユーザー データベース ファイルが共有の場所に格納されている場合は、ファイル システムでその場所にアクセスできるユーザーであればだれでも、所有する LocalDB のインスタンスを使用してデータベースを開くことができます。 データベース ファイルがユーザー データ フォルダーなどの保護された場所に格納されている場合は、そのユーザーおよびそのフォルダーにアクセスできる管理者だけがデータベースを開くことができます。 LocalDB ファイルを開く際には、LocalDB のインスタンスを一度に 1 つしか使用できません。

注意

LocalDB は、常にユーザーのセキュリティ コンテキストに基づいて実行されます。つまり、LocalDB は、ローカル管理者グループの資格情報で実行されることはありません。 そのため、LocalDB インスタンスで使用されるすべてのデータベース ファイルは、ローカルの Administrators グループのメンバーシップを考慮することなく、所有するユーザーの Windows アカウントを使用してアクセスできる必要があります。

関連項目

参照

SqlLocalDB ユーティリティ