チュートリアル : バージョン管理されたデータベースの新規作成と配置
このチュートリアルでは、2 つのテーブルと 1 つのストアド プロシージャを持つ単純なデータベースを作成します。 このプロセスでは、データベース プロジェクトを作成し、そのプロジェクトのデータベース オブジェクトを作成し、この変更をビルドしてデータベース サーバーに配置します。 データベース プロジェクトを作成し、そのデータベース プロジェクトをバージョン管理することにより、データベース スキーマをバージョン管理できます。
このチュートリアルの主な手順は次のとおりです。
データベース プロジェクトを作成します。
データベース テーブルを作成します。
テーブルのインデックス、キー、および制約を作成します。
ストアド プロシージャを作成します。
データベース プロジェクトのプロパティを構成します。
データベース プロジェクトをビルドします。
データベース プロジェクトを配置します。
データベース プロジェクトをバージョン管理します。
前提条件
このチュートリアルを実行するには、SQL Server 2005 を実行しているデータベース サーバーでデータベースを作成するためのアクセス許可を持つアカウントでログオンする必要があります。
データベース プロジェクトを作成するには
[ファイル] メニューの [新規作成] をポイントし、[プロジェクト] をクリックします。
[新しいプロジェクト] ダイアログ ボックスが表示されます。
[プロジェクトの種類] の [データベース プロジェクト] を展開し、[SQL Server 2005] をクリックします。
[テンプレート] の [SQL Server 2005 データベース プロジェクト] をクリックします。
[名前] ボックスに「ProductsDB」と入力します。
[ソリューションのディレクトリを作成] チェック ボックスをオンにします。
[場所] ボックス、[ソリューション名] ボックス、および [ソース管理に追加] ボックスの既定値をそのまま使用し、[OK] をクリックします。
メモ : この時点で、ソリューションをバージョン管理に追加できます。 このチュートリアルでは、最後の手順でソリューションをバージョン管理に追加します。
ソリューション エクスプローラに、新しいデータベース プロジェクト ProductsDB が表示されます。
[表示] メニューの [スキーマ ビュー] をクリックします。
スキーマ ビューがまだ表示されていない場合は、表示されます。
次に、テーブルをデータベース プロジェクトに追加します。
Categories テーブルをデータベース プロジェクトに追加するには
スキーマ ビューで、[ProductsDB] ノードを展開し、[スキーマ] ノードを展開します。次に、[dbo] ノードを展開し、[テーブル] ノードをクリックします。
[プロジェクト] メニューの [新しい項目の追加] をクリックします。
[新しい項目の追加] ダイアログ ボックスが表示されます。
メモ : スキーマ ビューで ProductsDB プロジェクトを右クリックし、[追加] をポイントし、[テーブル] をクリックする方法もあります。
[テンプレート] の [テーブル] をクリックします。
メモ : [カテゴリ] ボックスの一覧で、[テーブルとビュー] をクリックすると、テーブルのテンプレートを簡単に検索できます。
[名前] ボックスに、新しいテーブルの名前として「Categories」と入力します。
[追加] をクリックして、テーブルをデータベース プロジェクトに追加します。
ソリューション エクスプローラに、データベース プロジェクトの新しいテーブルのファイルが表示されます。 スキーマ ビューに新しいテーブル オブジェクトが表示されます。 Transact-SQL (T-SQL) エディタに新しいテーブルの定義が表示されます。
T-SQL エディタで、次の例に示すようにテーブルの定義を変更します。
-- ============================================= -- Create Categories table -- ============================================= CREATE TABLE [dbo].[Categories] ( [CategoryID] [int] NOT NULL IDENTITY(1, 1), [CategoryName] [nvarchar] (15) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL, [Description] [ntext] COLLATE SQL_Latin1_General_CP1_CI_AS NULL, [Picture] [image] NULL ) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
[ファイル] メニューの [dbo.Categories.table.sql の保存] をクリックします。
スキーマ ビューで、[dbo.Categories] ノードを展開します。
dbo.Categories テーブルの [列] ノードを展開します。
T-SQL エディタで定義した 4 つの列が表示されます。
次に、Categories テーブルにインデックスを追加します。
Categories テーブルにインデックスを追加するには
スキーマ ビューで [dbo.Categories] を右クリックし、[追加] をポイントし、[インデックス] をクリックします。
[新しい項目の追加] ダイアログ ボックスが表示されます。
[テンプレート] の [インデックス] をクリックします。
[名前] ボックスに、新しいインデックスの名前として「CategoriesCategoryID」と入力します。
[追加] をクリックして、インデックスを Categories テーブルに追加します。
ソリューション エクスプローラに、データベース プロジェクトの新しいインデックスのファイルが表示されます。 スキーマ ビューに新しいインデックス オブジェクトが表示されます。 T-SQL エディタに新しいインデックスの定義が表示されます。
メモ : スキーマ ビューでインデックスのアイコンと共に赤の円で囲まれた白い "x" が表示されますが、これは既定の定義にエラーがあることを示します。これは予期された動作であり、既定の定義で参照している "column_1" 列が存在しないために発生します。
T-SQL エディタで、次の例に示すようにインデックスの定義を変更します。
-- ============================================= -- Create CategoriesCategoryID index -- ============================================= CREATE NONCLUSTERED INDEX [CategoriesCategoryID] ON [dbo].[Categories] ([CategoryID]) ON [PRIMARY]
[ファイル] メニューの [dbo.Categories.CategoriesCategoryID.index.sql の保存] をクリックします。
インデックス定義が有効になり、アイコンのエラー インジケータが消えます。
次に、Categories テーブルに主キーを追加します。
Categories テーブルに主キーを追加するには
スキーマ ビューで [dbo.Categories] を右クリックし、[追加] をポイントし、[主キー] をクリックします。
[新しい項目の追加] ダイアログ ボックスが表示されます。
[テンプレート] の [主キー] をクリックします。
[名前] ボックスに、新しい主キーの名前として「PK_Categories」と入力します。
[追加] をクリックして、Categories テーブルに主キーを追加します。
ソリューション エクスプローラに、データベース プロジェクトの新しい主キーのファイルが表示されます。 スキーマ ビューに新しい主キー オブジェクトが表示されます。 T-SQL エディタに新しいキーの定義が表示されます。
メモ : 主キーのアイコンと共に赤の円で囲まれた白い "x" が表示されますが、これは既定の定義にエラーがあることを示します。これは予期された動作であり、既定の定義で参照している "column_1" 列が存在しないために発生します。
T-SQL エディタで、次の例に示すように主キーの定義を変更します。
-- ============================================= -- Create PK_Categories primary key -- ============================================= ALTER TABLE [dbo].[Categories] ADD CONSTRAINT [PK_Categories] PRIMARY KEY CLUSTERED ([CategoryID]) ON [PRIMARY]
[ファイル] メニューの [dbo.Categories.PK_Categories.pkey.sql の保存] をクリックします。
主キー定義が有効になり、アイコンのエラー インジケータが消えます。
次に、Products テーブルを追加します。
Products テーブルを追加するには
スキーマ ビューで、[ProductsDB] をクリックします。
[プロジェクト] メニューの [新しい項目の追加] をクリックします。
[新しい項目の追加] ダイアログ ボックスが表示されます。
メモ : スキーマ ビューで ProductsDB プロジェクトを右クリックし、[追加] をポイントし、[テーブル] をクリックする方法もあります。
[テンプレート] の [テーブル] をクリックします。
[名前] ボックスに、新しいテーブルの名前として「Products」と入力します。
[追加] をクリックして、テーブルをデータベース プロジェクトに追加します。
ソリューション エクスプローラに、データベース プロジェクトの新しいテーブルのファイルが表示されます。 スキーマ ビューに新しいテーブル オブジェクトが表示されます。 T-SQL エディタに新しいテーブルの定義が表示されます。
T-SQL エディタで、次の例に示すようにテーブルの定義を変更します。
-- ============================================= -- Create Products table -- ============================================= CREATE TABLE [dbo].[Products] ( [ProductID] [int] NOT NULL IDENTITY(1, 1), [ProductName] [nvarchar] (40) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL, [CategoryID] [int] NULL, [QuantityPerUnit] [nvarchar] (20) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, [UnitPrice] [money] NULL CONSTRAINT [DF_Products_UnitPrice] DEFAULT (0), [UnitsInStock] [smallint] NULL CONSTRAINT [DF_Products_UnitsInStock] DEFAULT (0), [UnitsOnOrder] [smallint] NULL CONSTRAINT [DF_Products_UnitsOnOrder] DEFAULT (0), [ReorderLevel] [smallint] NULL CONSTRAINT [DF_Products_ReorderLevel] DEFAULT (0), [Discontinued] [bit] NOT NULL CONSTRAINT [DF_Products_Discontinued] DEFAULT (0) ) ON [PRIMARY]
[ファイル] メニューの [dbo.Products.table.sql の保存] をクリックします。
スキーマ ビューで、[dbo.Products] ノードを展開します。
dbo.Products テーブルの [列] ノードを展開します。
T-SQL エディタで定義した 9 つの列が表示されます。
次に、Products テーブルにインデックスを追加します。
Products テーブルにインデックスを追加するには
スキーマ ビューで [dbo.Products] を右クリックし、[追加] をポイントし、[インデックス] をクリックします。
[新しい項目の追加] ダイアログ ボックスが表示されます。
[テンプレート] の [インデックス] をクリックします。
[名前] ボックスに、新しいインデックスの名前として「ProductsCategoryID」と入力します。
[追加] をクリックして、インデックスを Products テーブルに追加します。
ソリューション エクスプローラに、データベース プロジェクトの新しいインデックスのファイルが表示されます。 スキーマ ビューに新しいインデックス オブジェクトが表示されます。 T-SQL エディタに新しいインデックスの定義が表示されます。
メモ : スキーマ ビューでインデックスのアイコンと共に赤の円で囲まれた白い "x" が表示されますが、これは既定の定義にエラーがあることを示します。これは予期された動作であり、既定の定義で参照している "column_1" 列が存在しないために発生します。
T-SQL エディタで、次の例に示すようにインデックスの定義を変更します。
-- ============================================= -- Create ProductsCategoryID index -- ============================================= CREATE NONCLUSTERED INDEX [ProductsCategoryID] ON [dbo].[Products] ([CategoryID]) ON [PRIMARY]
[ファイル] メニューの [dbo.Products.ProductsCategoryID.index.sql の保存] をクリックします。
インデックス定義が有効になり、アイコンのエラー インジケータが消えます。
次に、Products テーブルに主キーを追加します。
Products テーブルに主キーを追加するには
スキーマ ビューで [dbo.Products] を右クリックし、[追加] をポイントし、[主キー] をクリックします。
[新しい項目の追加] ダイアログ ボックスが表示されます。
[テンプレート] の [主キー] をクリックします。
[名前] ボックスに、新しい主キーの名前として「PK_Products」と入力します。
[追加] をクリックして、Products テーブルに主キーを追加します。
ソリューション エクスプローラに、データベース プロジェクトの新しい主キーのファイルが表示されます。 スキーマ ビューに新しい主キー オブジェクトが表示されます。 T-SQL エディタに新しい主キーの定義が表示されます。
メモ : 主キーのアイコンと共に赤の円で囲まれた白い "x" が表示されますが、これは既定の定義にエラーがあることを示します。これは予期された動作であり、既定の定義で参照している "column_1" 列が存在しないために発生します。
T-SQL エディタで、次の例に示すように主キーの定義を変更します。
-- ============================================= -- Create PK_Products primary key -- ============================================= ALTER TABLE [dbo].[Products] ADD CONSTRAINT [PK_Products] PRIMARY KEY CLUSTERED ([ProductID]) ON [PRIMARY]
[ファイル] メニューの [dbo.Products.PK_Products.pkey.sql の保存] をクリックします。
主キー定義が有効になり、アイコンのエラー インジケータが消えます。
次に、Products テーブルに外部キーを追加します。
Products テーブルと Categories テーブルとの間の外部キーを追加するには
スキーマ ビューで [dbo.Products] を右クリックし、[追加] をポイントし、[外部キー] をクリックします。
[新しい項目の追加] ダイアログ ボックスが表示されます。
[テンプレート] の [外部キー] をクリックします。
[名前] ボックスに、新しい外部キーの名前として「FK_ProductsCategories」と入力します。
[追加] をクリックして、Products テーブルに外部キーを追加します。
ソリューション エクスプローラに、データベース プロジェクトの新しい外部キーのファイルが表示されます。 スキーマ ビューに新しい外部キー オブジェクトが表示されます。 T-SQL エディタに新しい外部キーの定義が表示されます。
メモ : 外部キーのアイコンと共に赤の円で囲まれた白い "x" が表示されますが、これは既定の定義にエラーがあることを示します。 これは予期された動作であり、既定の定義で参照している "column_1" 列が存在しないために発生します。
T-SQL エディタで、次の例に示すように外部キーの定義を変更します。
-- ============================================= -- Create FK_Products_Categories foreign key -- ============================================= ALTER TABLE [dbo].[Products] WITH NOCHECK ADD CONSTRAINT [FK_Products_Categories] FOREIGN KEY ([CategoryID]) REFERENCES [dbo].[Categories] ([CategoryID])
[ファイル] メニューの [dbo.Products.FK_ProductsCategories.fkey.sql の保存] をクリックします。
外部キー定義が有効になり、アイコンのエラー インジケータが消えます。
次に、Products テーブルに CHECK 制約を追加します。
Products テーブルに CHECK 制約を追加するには
スキーマ ビューで [dbo.Products] をクリックし、[追加] をポイントし、[CHECK 制約] をクリックします。
[新しい項目の追加] ダイアログ ボックスが表示されます。
[テンプレート] の [CHECK 制約] をクリックします。
[名前] ボックスに、新しい CHECK 制約の名前として「CK_ProductsUnitPrice」と入力します。
[追加] をクリックして、Products テーブルに制約を追加します。
ソリューション エクスプローラに、データベース プロジェクトの新しい制約のファイルが表示されます。 スキーマ ビューに新しい制約オブジェクトが表示されます。 T-SQL エディタに新しい制約の定義が表示されます。
メモ : 制約のアイコンと共に赤の円で囲まれた白い "x" が表示されますが、これは既定の定義にエラーがあることを示します。 これは予期された動作であり、既定の定義で参照している "column_1" 列が存在しないために発生します。
T-SQL エディタで、次の例に示すように制約の定義を変更します。
-- ============================================= -- Create CK_ProductsUnitPrice check constraint -- ============================================= ALTER TABLE [dbo].[Products] WITH NOCHECK ADD CONSTRAINT [CK_Products_UnitPrice] CHECK (([UnitPrice] >= 0))
[ファイル] メニューの [dbo.Products.CK_ProductsUnitPrice.chkconst.sql の保存] をクリックします。
制約定義が有効になり、アイコンのエラー インジケータが消えます。
次に、プロジェクトにストアド プロシージャを追加します。
ストアド プロシージャを作成するには
スキーマ ビューで、[ProductsDB] をクリックします。
[プロジェクト] メニューの [新しい項目の追加] をクリックします。
[新しい項目の追加] ダイアログ ボックスが表示されます。
メモ : スキーマ ビューで ProductsDB プロジェクトを右クリックし、[追加] をポイントし、[ストアド プロシージャ] をクリックする方法もあります。
[カテゴリ] で、[データベース プロジェクト] を展開し、[プログラミング] をクリックします。
[テンプレート] の [ストアド プロシージャ] をクリックします。
[名前] ボックスに、新しいストアド プロシージャの名前として「Ten Most Expensive Products」と入力します。
[追加] をクリックして、ストアド プロシージャをデータベース プロジェクトに追加します。
ソリューション エクスプローラに、データベース プロジェクトの新しいストアド プロシージャのファイルが表示されます。 スキーマ ビューに新しいストアド プロシージャ オブジェクトが表示されます。 T-SQL エディタに新しいストアド プロシージャの定義が表示されます。
T-SQL エディタで、次の例に示すようにストアド プロシージャの定義を変更します。
-- ============================================= -- Create Ten Most Expensive Products -- stored procedure -- ============================================= CREATE PROCEDURE [dbo].[Ten Most Expensive Products] AS SET ROWCOUNT 10 SELECT Products.ProductName AS TenMostExpensiveProducts, Products.UnitPrice FROM Products ORDER BY Products.UnitPrice DESC RETURN 0
[ファイル] メニューの [dbo.Ten Most Expensive Products.proc.sql の保存] をクリックします。
スキーマ ビューで、[プログラミング] ノードを展開し、[ストアド プロシージャ] ノードを展開します。
T-SQL エディタで定義したプロシージャが表示されます。
次に、プロジェクトをビルドして配置する前の準備として、プロジェクトの設定を構成します。
プロジェクトの配置の設定を構成するには
ソリューション エクスプローラで、[ProductsDB] (ソリューションではなくプロジェクト) をクリックします。
[プロジェクト] メニューの [ProductsDB のプロパティ] をクリックします。
プロジェクトのプロパティ ウィンドウが表示されます。
メモ : ソリューション エクスプローラで ProductsDB プロジェクトを右クリックし、[プロパティ] をクリックする方法もあります。
[配置] タブをクリックします。
[配置動作] ボックスの一覧の [配置スクリプト (.sql) を作成してデータベースに配置します] をクリックします。
[編集] をクリックし、ターゲット接続を指定します。
ProductsDB データベースを配置するデータベース サーバーへの接続情報を指定します。
[データベース名の選択または入力] ボックスに、「ProductsDB」と入力するか、この名前をクリックし、[OK] をクリックします。
[ターゲット接続] ボックスに接続文字列が入力されます。 [ターゲット データベース名] は ProductsDB に設定されます
その他のオプションについては既定値を使用します。
[ファイル] メニューの [選択されたファイルを上書き保存] をクリックします。
プロジェクト ビルドの設定が保存されます。
次に、データベース プロジェクトをビルドします。
データベース プロジェクトをビルドするには
[ビルド] メニューの [ソリューションのビルド] をクリックします。
データベース プロジェクトがビルドされます。 成功した場合は、ステータス バーに "ビルドに成功しました。" と表示され、[出力] ウィンドウにビルド結果が表示されます。
最後に、データベース プロジェクトを配置します。
データベース プロジェクトをデータベース サーバーに配置するには
ソリューション エクスプローラで、[ProductsDB] (ソリューションではなくプロジェクト) をクリックします。
[ビルド] メニューの [ProjectName の配置] をポイントします。
ビルド構成に指定した接続を使って、データベース プロジェクトが配置されます。 "配置に成功しました。" というメッセージが [出力] ウィンドウとステータス バーに表示されます。
データベース プロジェクトをバージョン管理にチェックインするには
ソリューション エクスプローラで [ProductsDB] (ソリューション) をクリックします。
[ファイル] メニューの [ソース管理] をポイントし、[ソリューションをソース管理に追加] をクリックします。
バージョン管理ソフトウェアの指示に従い、ソリューション、データベース プロジェクト、およびその内容をバージョン管理に追加し、すべてのファイルをチェックインします。 データベース プロジェクトはデータベース スキーマのマスタ コピーであり、バージョン管理されています。
次の手順
他のチュートリアルを実行して、配置されている既存のデータベースを操作する方法を学習できます。
参照
概念
その他の技術情報
Building and Deploying Databases to Staging and Production Environments