ローカル データベースでビルドおよび配置を行う方法
Microsoft SQL Server 2012 では、ローカルのオンデマンド サーバー インスタンスが提供されます。これは SQL Server Express Local Database Runtime と呼ばれるもので、SQL Server データベース プロジェクトをデバッグする際にアクティブ化されます。このローカル サーバー インスタンスは、プロジェクトのビルド、テスト、およびデバッグ用のサンドボックスとして使用できます。インストールされているどの SQL Server インスタンスからも独立しており、SQL Server Data Tools (SSDT) の外ではアクセスできません。運用データベースへのアクセスが制限または禁止されている開発者が、許可されたユーザーによってプロジェクトが運用環境に配置される前に、ローカルでプロジェクトをテストする場合、このような環境が最適です。これに加えて、SQL Azure 用にデータベース ソリューションを開発する場合、このローカル サーバーで提供される便利さを利用して、データベース プロジェクトをクラウドに配置する前に、ローカルで開発およびテストできます。
警告
SQL Server オブジェクト エクスプローラー のローカル データベース ノードの下のデータベースは、対応するデータベース プロジェクトのリフレクションであり、接続されているサーバー インスタンスにある同じ名前のデータベースとは関連していません。
警告
以下に示す手順では、「接続されているデータベース開発」および「プロジェクト指向のオフライン データベース開発」に示されているこれまでの手順で作成したエンティティを使用します。
ローカル データベースを使用するには
SQL Server オブジェクト エクスプローラー の SQL Server ノードの下に、Local という新しいノードが表示されます。これは、ローカルのデータベース インスタンスです。
[ローカル] ノードおよび [データベース] ノードを展開します。TradeDev プロジェクトと同じ名前のデータベースが表示されます。このデータベースの下のノードを展開します。[データ ツール操作] ウィンドウには、[ローカル] ノードのいずれかのデータベースで進行中の展開/インポート操作の状況が表示されます。前の手順で作成したテーブルやエンティティが含まれていないことに注意してください。
F5 キーを押して、TradeDev データベース プロジェクトのデバッグを実行します。
SSDT の既定では、データベース プロジェクトのデバッグに、ローカルのデータベース サーバー インスタンスが使用されます。この場合、SSDT ではまずプロジェクトのビルドが試行され、エラーがなければ、プロジェクト (およびそのエンティティ) がローカル データベースに配置されます。後で同じプロジェクトをデバッグすると、SSDT は直前のデバッグ セッション以降に生じた変更を検出し、これらのみをローカル データベースに配置します。
[ローカル] データベース サーバー内の TradeDev の下のノードを再度展開します。今回は、ローカル データベース サーバーにテーブル、ビュー、および関数が配置されています。
TradeDev ノードを右クリックし、[新しいクエリ] をクリックします。
スクリプト ペインに次のコードを貼り付け、[クエリの実行] をクリックしてクエリを実行します。
select * from dbo.GetProductsBySupplier(1)
メッセージ ペインに "(0 行処理されました)" というメッセージが表示され、結果ペインには行が返されません。これは、実データが格納されている接続されたデータベースではなく、ローカル データベースに対してクエリを実行しているためです。
このことは、ローカルの TradeDev データベースの下にある Products テーブルを右クリックし、[データの表示] をクリックすると確認できます。テーブルが空であることがわかります。
実データをローカル データベースにレプリケートするには
SQL Server オブジェクト エクスプローラー で、接続されている SQL Server インスタンスを展開し、TradeDev データベースを探します。
Suppliers テーブルを右クリックして、[データの表示] をクリックします。
データ エディターの最上部にある [スクリプト] (右から 2 番目のボタン) をクリックします。スクリプトから INSERT ステートメントをコピーします。
[ローカル] サーバー インスタンスを展開し、TradeDev ノードを右クリックして、[新しいクエリ] をクリックします。
このクエリ ウィンドウに INSERT ステートメントを貼り付けて、クエリを実行します。
これまでの手順を繰り返して、接続されている TradeDev データベースの Products テーブルおよび Fruits テーブルのデータをローカルの TradeDev データベースにレプリケートします。
[ローカル] サーバー インスタンスを右クリックして [更新] をクリックします。[データの表示] でテーブルを調べて、ローカル データベースにデータが設定されたことを確認します。
[ローカル] サーバー インスタンスの TradeDev ノードを右クリックし、[新しいクエリ] をクリックします。
スクリプト ペインに次のコードを貼り付け、[クエリの実行] をクリックしてクエリを実行します。
select * from dbo.GetProductsBySupplier(1)
エディター ペインの下にあるTransact-SQL結果ペインに、 テーブルの Apples 行および ProductsPotato Chips 行が返されています。