チュートリアル: データベースとデータベース プロジェクトのスキーマの比較
このチュートリアルでは、Visual Studio Team System Database Edition を使用して、データベース プロジェクトのスキーマとデータベースのスキーマとを比較します。
チームがデータベース プロジェクトとデータベースを使用している方法に応じて、スキーマの変更をいずれかにコピーできます。一般的なシナリオは次のとおりです。
プロジェクトがソースで、データベースがターゲットの場合。データベース プロジェクトを使用すると、データベースを開発または保守できます。プロジェクトでスキーマを変更した後に、ステージング サーバーでホストされるデータベースにコピーします。後で、チームがデータベースを運用サーバーに配置することもできます。
このチュートリアルで実行するスキーマ比較操作により、スキーマの相違点からデータ定義言語 (DDL: Data Definition Language) スクリプトが生成されます。このスクリプトを使用すると、データベース プロジェクトのすべてまたは一部をデータベースに適用できます。詳細については、「プロジェクトからデータベースに変更を反映する」を参照してください。
データベースがソースで、プロジェクトがターゲットの場合。運用データベースのスキーマでエラーが見つかるか、スキーマが古くなり更新が必要になる可能性があります。この探索により、データベースに緊急の更新が適用される可能性があります。プロジェクトをデータベースと同期しておくには、緊急の更新によるスキーマの変更を、データベース プロジェクトにインポートします。詳細については、「方法 : 更新をデータベースからデータベース プロジェクトにインポートする」を参照してください。
このチュートリアルでは、以下のタスクを行います。
設定フェーズ
データベース プロジェクトを作成する。新しいプロジェクトを空で開始します。
データベース スキーマをプロジェクト スキーマと比較する。この比較では、データベース プロジェクトをソース、データベースをターゲットとして指定します。比較が完了すると、この構成により、データベース プロジェクトからデータベースにスキーマの更新を書き込むことができます。
メモ : ソース データベースからターゲット データベース プロジェクトに変更を反映することもできます。詳細については、「方法 : 更新をデータベースからデータベース プロジェクトにインポートする」を参照してください。
データベース スキーマをプロジェクトにインポートする。これで、データベースとプロジェクトのスキーマが同じになります。
実行フェーズ
データベース プロジェクトにテーブルを追加する。3 つの列を持つ InternationalShippers というテーブルを追加します。
2 つのスキーマを再度比較する。InternationalShippers テーブルは、データベース プロジェクト内の新規のテーブルとして表示されます。
プロジェクトからデータベースに変更を反映する。新しい InternationalShippers テーブルを Northwind データベースに反映するように選択できます。この手順を実行すると、サンプルの Northwind データベースの一部が上書きされます。
前提条件
このチュートリアルを完了するための要件を次に示します。
Microsoft SQL Server 2000 または Microsoft SQL Server 2005
Microsoft Visual Studio 2005 (Database Edition と共にインストール)
Northwind データベース
設定フェーズ
データベース プロジェクトを作成する
データベース プロジェクトを作成するには
[ファイル] メニューの [新規作成] をポイントし、[プロジェクト] をクリックします。
[新しいプロジェクト] ダイアログ ボックスが表示されます。
[プロジェクトの種類] の [データベース プロジェクト] を展開し、[Microsoft SQL Server] をクリックします。
[テンプレート] の [SQL Server 2005] をクリックします。
[名前] ボックスに「Northwind_Project」と入力し、[OK] をクリックします。
Northwind_Project が開き、ソリューション エクスプローラに表示されます。プロジェクトは空です。
メモ : Team Edition for Database Professionals を使用すると、空ではないプロジェクトを作成することもできます。詳細については、「方法 : データベース プロジェクトを作成する」を参照してください。
データベース スキーマをプロジェクト スキーマと比較する
2 つのスキーマを比較するには
(省略可能) スキーマの比較方法に影響するオプションを設定します。詳細については、「オプション (データベース ツール/スキーマ比較)」および「方法 : データベース スキーマの比較に関するオプションを設定する」を参照してください。
[データ] メニューの [スキーマ比較] をポイントし、[新しいスキーマ比較] をクリックします。
[新しいスキーマ比較] ダイアログ ボックスが開きます。[ソース スキーマ] に Northwind_Project プロジェクトが表示されます。
[ターゲット スキーマ] で、[データベース] をクリックし、Northwind データベースをクリックします。
メモ : [データベース] ボックスの下の一覧が空の場合は、[新しい接続] をクリックします。[接続のプロパティ] ダイアログ ボックスで、Northwind データベースを含むデータベース サーバーに接続し、[OK] をクリックします。[データベース] ボックスの下の一覧が空ではなく、SQL Server 認証を使用して Northwind データベースに接続する場合は、[SQL Server への接続] ダイアログ ボックスが表示されます。データベースに接続するための資格情報を指定する必要があります。
[新しいスキーマ比較] ダイアログ ボックスで、[OK] をクリックします。
Northwind データベースのスキーマが、Northwind_Project プロジェクトのスキーマと比較されます。比較結果が [スキーマ比較] ウィンドウに表示されます。Northwind_Project プロジェクトに存在せず Northwind データベースに存在するすべてのオブジェクトについて、更新アクションがドロップとして表示されます。
データベース スキーマをプロジェクトにインポートする
データベース スキーマをインポートするには
[表示] メニューの [スキーマ ビュー] をクリックします。
[スキーマ ビュー] が開き、Northwind_Project プロジェクトのスキーマが表示されます。
Northwind_Project を右クリックし、[データベース スキーマのインポート] をクリックします。
データベースのインポート ウィザードが開きます。
[ソース データベース接続] で、Northwind データベースをクリックします。
[完了] をクリックします。
データベースのスキーマがプロジェクトにインポートされます。現在、2 つのスキーマは同一です。
メモ : データベース プロジェクトは、Northwind データベースからさまざまなプロパティを継承します。これらのプロパティを表示するには、ソリューション エクスプローラで Northwind_Project を右クリックし、[プロパティ] をクリックします。インポートされる設定には、[プロジェクトの設定] ページの既定の照合順序、および [データベースのプロパティ] ページのその他の設定が含まれます。
2 つのスキーマが同一であることを確認するには、[スキーマ比較] ツール バーの [最新の情報に更新] をクリックします。
スキーマが再び比較されます。同一のスキーマ オブジェクトについては、更新アクションはスキップとして表示されます。
実行フェーズ
データベース プロジェクトにテーブルを追加する
プロジェクトにテーブルを追加するには
[表示] メニューの [スキーマ ビュー] をクリックします。
[スキーマ ビュー] が開き、Northwind_Project プロジェクトのスキーマが表示されます。
スキーマ ビューで、Northwind_Project ノードを展開します。
[テーブル] を右クリックし、[追加] をポイントして、[テーブル] をクリックします。
[新しい項目の追加 - Northwind_Project] ダイアログ ボックスが開きます。
[テンプレート] の [テーブル] をクリックします。
[名前] ボックスに、「InternationalShippers」と入力し、[追加] をクリックします。
InternationalShippers という名前のテーブルが Northwind_Project プロジェクトに追加されます。Transact-SQL (T-SQL) エディタにテーブル定義が表示されます。
InternationalShippers.table.sql の SQL スクリプトを次のように変更します。
CREATE TABLE [dbo].[InternationalShippers] ( [ShipperID] [int] NOT NULL IDENTITY(1,1), [CompanyName] [nvarchar] (40) NOT NULL, [Region] [nvarchar] (40) NOT NULL, [Phone] [nvarchar] (24) NULL ) ON [PRIMARY]
[InternationalShippers.table.sql を保存] をクリックします。
スキーマ ビューで [InternationalShippers] テーブルを右クリックし、[ファイルをソリューション エクスプローラで表示] をクリックします。
InternationalShippers.sql ファイルがソリューション エクスプローラで強調表示されます。
F4 キーを押します。
[プロパティ] ウィンドウが表示され、InternationalShippers.table.sql ファイルのプロパティが表示されます。[ビルド アクション] が [ビルド] に設定されています。[ビルド アクション] プロパティを [ビルド] に設定することにより、このファイルがデータベース オブジェクトの定義を含んでいて解析および検証の必要があることを示します。
2 つのスキーマを比較する
2 つのスキーマを比較するには
[スキーマ比較] タブをクリックし、最新の比較結果を再表示します。
[スキーマ比較] ツール バーの [最新の情報に更新] をクリックします。
Northwind データベースのスキーマが、変更された Northwind_Project プロジェクトのスキーマと比較されます。比較結果が [スキーマ比較] ウィンドウに表示されます。Northwind_Project 列に、[dbo].[InternationalShippers] テーブルが表示されます。
新しいテーブルの状態は [新規]、更新アクションは [作成] です。ここで変更を反映すると、ターゲット データベースでテーブルが作成されます。詳細については、次の手順を参照してください。
プロジェクトからデータベースに変更を反映する
この手順では、新しい InternationalShippers テーブルを Northwind データベースに反映します。詳細については、「方法 : データベース スキーマを同期する」を参照してください。
注意 : |
---|
この手順は、単に説明のために記載されています。この手順により、サンプルの Northwind データベースの一部が上書きされる可能性があるため、この手順を実行する必要がない可能性もあります。Northwind の元のコピーを保持する必要がない場合にのみ、この手順を使用します。Northwind データベースのコピーで手順を実行することもできます。 |
変更をターゲット データベースに反映するには
[スキーマ比較] ウィンドウで [更新の書き込み] をクリックします。
InternationalShippers テーブルの作成の更新アクションを含む、[スキーマ比較] ウィンドウに表示された更新アクションが実行されます。この同期により、ソース データベース プロジェクトのスキーマに一致するようにターゲット データベースのスキーマが変更されます。
メモ : 更新アクションの実行中に操作を取り消すには、[データ] メニューの [スキーマ比較] をポイントし、[ターゲットへの書き込みの停止] をクリックします。
注意 : 一部のスキーマ変更は処理できないため、更新操作を取り消した場合は、データが失われることがあります。たとえば、ターゲット データベースのあるテーブルが、再作成時の準備中に削除されている場合があります。その時点で更新を取り消すと、そのテーブルが失われることがあります。このようなデータ損失が発生した場合、スキーマを再度比較する必要が生じることがあります。