ローカル データベースでビルドおよび配置を行う方法

SQL Server では、ローカルのオンデマンド サーバー インスタンスが提供されます。これは SQL Server Express Local Database Runtime (LocalDB) と呼ばれるもので、SQL Server データベース プロジェクトをデバッグする際にアクティブ化されます。 このローカル サーバー インスタンスは、プロジェクトのビルド、テスト、およびデバッグ用のサンドボックスとして使用できます。

インストールされているどの SQL Server インスタンスからも独立しており、SQL Server Data Tools (SSDT) の外ではアクセスできません。 運用データベースへのアクセスが制限または禁止されている開発者が、許可されたユーザーによってプロジェクトが運用環境に配置される前に、ローカルでプロジェクトをテストする場合、このような環境が最適です。 これに加えて、Azure SQL 用にデータベース ソリューションを開発する場合、このローカル サーバーで提供される便利さを利用して、データベース プロジェクトをクラウドに配置する前に、ローカルで開発およびテストできます。

制限事項

SQL Server オブジェクト エクスプローラーのローカル データベース ノードの下のデータベースは、対応するデータベース プロジェクトのリフレクションであり、接続されているサーバー インスタンスにある同じ名前のデータベースとは関連していません。

警告

以下に示す手順では、「接続されているデータベース開発」および「プロジェクト指向のオフライン データベース開発」に示されているこれまでの手順で作成したエンティティを使用します。

ローカル データベースを使用する

  1. SQL Server オブジェクト エクスプローラーSQL Server ノードの下に、 [ローカル] という新しいノードが表示されます。 これは、ローカルのデータベース インスタンスです。

  2. [ローカル] ノードおよび [データベース] ノードを展開します。 TradeDev プロジェクトと同じ名前のデータベースが表示されます。 このデータベースの下のノードを展開します。 [データ ツール操作] ウィンドウには、[ローカル] ノードのいずれかのデータベースで進行中の展開/インポート操作の状況が表示されます。 前の手順で作成したテーブルやエンティティは含まれていません。

  3. F5 キーを押して、TradeDev データベース プロジェクトのデバッグを実行します。

    SSDT の既定では、データベース プロジェクトのデバッグに、ローカルのデータベース サーバー インスタンスが使用されます。 この場合、SSDT ではまずプロジェクトのビルドが試行され、エラーがなければ、プロジェクト (およびそのエンティティ) がローカル データベースに配置されます。 後で同じプロジェクトをデバッグすると、SSDT は直前のデバッグ セッション以降に生じた変更を検出し、これらの変更のみをローカル データベースに配置します。

  4. [ローカル] データベース サーバー内の TradeDev の下のノードを再度展開します。 今回は、ローカル データベース サーバーにテーブル、ビュー、および関数が配置されます。

  5. TradeDev ノードを右クリックし、[新しいクエリ] をクリックします。

  6. スクリプト ペインに次のコードを貼り付け、[クエリの実行] を選択してクエリを実行します。

    SELECT * FROM dbo.GetProductsBySupplier(1);
    
  7. メッセージ ペインに (0 row(s) affected) が表示され、結果ペインには行が返されません。 これは、実際のデータが格納されている接続されたデータベースではなく、ローカル データベースに対してクエリを実行するためです。

    このことは、ローカルの Products データベースの下にある TradeDev テーブルを右クリックし、[データの表示] をクリックすると確認できます。 このテーブルは空です。

実際のデータをローカル データベースにレプリケートする

  1. SQL Server オブジェクト エクスプローラーで、接続されている SQL Server インスタンスを展開し、TradeDev データベースを探します。

    Suppliers テーブルを右クリックし、[データの表示] を選択します。

  2. データ エディターの最上部にある [スクリプト] (右から 2 番目のボタン) を選択します。 スクリプトから INSERT ステートメントをコピーします。

  3. [ローカル] サーバー インスタンスを展開し、TradeDev ノードを右クリックして、[新しいクエリ] をクリックします。

  4. このクエリ ウィンドウに INSERT ステートメントを貼り付けて、クエリを実行します。

  5. これまでの手順を繰り返して、接続されている Fruits データベースの Products テーブルおよび TradeDev テーブルのデータをローカルの TradeDev データベースにレプリケートします。

  6. [ローカル] サーバー インスタンスを右クリックして [更新] をクリックします。 [データの表示] でテーブルを調べて、ローカル データベースにデータが設定されたことを確認します。

  7. ローカル サーバー インスタンスの TradeDev ノードを右クリックし、[新しいクエリ] を選択します。

  8. スクリプト ペインに次のコードを貼り付け、[クエリの実行] を選択してクエリを実行します。

    SELECT * FROM dbo.GetProductsBySupplier(1);
    
  9. Transact-SQL エディター ペインの下にある [結果] ペインに、Apples テーブルの Potato Chips 行および Products 行が返されて、表示されます。