シナリオ : データベースおよびサーバー オブジェクトの作成および変更

データベース オブジェクトは、データベースの内容の構造を定義します。 これらのオブジェクトはデータベース プロジェクトに含まれます。データベース プロジェクトには、データ生成計画とスクリプトも含めることができます。 サーバー オブジェクトは、データベース サーバーには存在するが、データベースには存在しないオブジェクト (ログイン、証明書、カスタム エラー メッセージなど) を定義します。 サーバー オブジェクトはサーバー プロジェクトに含まれます。

ソリューション エクスプローラで、データベースおよびサーバー オブジェクトの定義はファイルに格納され、データベースまたはサーバー プロジェクト内で種類別にグループ化されます。 データベースおよびサーバー オブジェクトを操作するときは、オブジェクトが種類別にグループ化されているスキーマ ビューの方が直観的に使用できます。 データベース プロジェクト内のファイルは、"ビルド" という Build Type でマークされていれば、データベース オブジェクト定義について解析されます。 データベース プロジェクトに含まれているが、別の Build Type でマークされているファイルは、データベース オブジェクトを含まないファイルとして扱われ、スキーマ ビューには表示されません。

一般的なタスク

次の表に、このシナリオをサポートする一般的なタスクの説明と、それらのタスクを正常に完了する方法の詳細へのリンクを示します。

タスク

関連する参照先

実習を行う : 入門チュートリアルの手順に従って作業すると、データベース プロジェクトとそのオブジェクトの作成方法およびそれらのオブジェクトの変更方法を習得できます。

チュートリアル : バージョン管理されたデータベースの新規作成と配置

チュートリアル : データベース オブジェクトの変更

データベース オブジェクトとサーバー オブジェクトの詳細を理解する : このトピックの後半で、データベースおよびサーバー オブジェクトの名前の解決方法、オブジェクト定義内でのデータベースの参照方法、オブジェクトの検証方法などのデータベースおよびサーバー オブジェクトの詳細について学習できます。

オブジェクト定義

ソリューション エクスプローラおよびスキーマ ビューに表示されるオブジェクト

オブジェクト名の解決

オブジェクト定義のデータベース名の参照

オブジェクト レベルの SET オプション

オブジェクトの検証

データベース オブジェクトまたはサーバー オブジェクトにオブジェクトを追加する : オブジェクトは、さまざまな方法でデータベースまたはサーバー プロジェクトに追加できます。

  • スクリプトから、または更新されたデータベースかサーバーからオブジェクトをインポートできます。

  • 既定のスキーマまたは特定のスキーマの中にオブジェクトを作成できます。

  • オブジェクト定義を含むファイルをプロジェクトに追加できます。

  • オブジェクトをプロジェクトに追加した後、オブジェクト レベルのオプション (SET オプションと呼ばれる) をカスタマイズできます。

方法 : スクリプトからデータベース オブジェクトをインポートする

方法 : 更新をデータベースからデータベース プロジェクトにインポートする

方法 : データベース オブジェクトを作成する

方法 : データベース オブジェクトを特定のスキーマに追加する

方法 : データベース プロジェクトに既存の項目を追加する

方法 : オブジェクト レベルの SET オプションを指定する

データベースまたはサーバー プロジェクトに特別なオブジェクトを追加する : 一部の種類のオブジェクトをプロジェクトに追加するには、通常の手順とはわずかに異なるオブジェクトの種類に固有の手順に従う必要があります。

  • テーブルとインデックスのオプションを定義できます。

  • ロールにユーザーを追加できます。

  • フルテキスト カタログを定義できます。

  • ファイル グループとファイルを定義できます。

方法 : テーブルとインデックスのオプションを指定する

方法 : ロールにユーザーを追加する

方法 : フルテキスト カタログを定義する

ファイルおよびファイル グループの概要

方法 : ファイルおよびファイル グループを追加する

データベース オブジェクトまたはサーバー オブジェクトを変更する : サーバーまたはデータベース プロジェクト内のオブジェクトの定義を変更できます。 これらのオブジェクトについて、オブジェクト レベルの SET オプションを変更することもできます。

方法 : データベース オブジェクトを表示する

方法 : データベース オブジェクトを変更する

方法 : オブジェクト レベルの SET オプションを指定する

データベースまたはサーバー プロジェクトからオブジェクトを削除する : データベースまたはサーバー プロジェクトからオブジェクトを完全に削除できます。 開発中のオブジェクトを一時的に除外することもできます。

方法 : データベース オブジェクトを削除する


方法 : データベース プロジェクトからファイルを除外する

データベース オブジェクトおよびサーバー オブジェクトのテンプレートをカスタマイズする : データベース オブジェクトまたはサーバー オブジェクトの作成時に使用するテンプレートを表示および変更できます。

データベース オブジェクトとサーバー オブジェクトのテンプレートの概要

問題をトラブルシューティングする : データベースおよびサーバー プロジェクトを使用して一般的な問題をトラブルシューティングする方法についてさらに詳しく学習できます。

データベース プロジェクト、ビルド、および配置に関する問題のトラブルシューティング

オブジェクト定義

データベースおよびサーバー オブジェクトは、プロジェクト フォルダに格納される .sql ファイルのコレクションで定義されます。大部分のオブジェクトが、個別のファイルで定義されます。 例外として、テーブル内の列と、ストアド プロシージャまたは関数のパラメータがあります。 列はテーブル定義を格納するファイル内に指定され、パラメータはストアド プロシージャまたは関数を含むファイル内に指定されます。

.sql ファイルの "ビルド アクション" プロパティは、そのファイルを解析してデータベース オブジェクトの定義が含まれているかどうかを検証することを示します。 既定では、データベース オブジェクトの定義が含まれているファイルは "ビルド" に設定され、その他の .sql スクリプトや各種のファイルは "ビルド内にありません" に設定されています。 また、対象のファイルがビルド スクリプトに組み込まれるかどうかも、"ビルド アクション" プロパティによって決まります。

各オブジェクトの名前によってそのファイル名が決まり、オブジェクトの種類によって既定のファイル拡張子が決まります。 たとえば、関数は ObjectName.function.sql という名前のファイルに格納され、ストアド プロシージャは ObjectName.proc.sql という名前のファイルに格納されます。

ソリューション エクスプローラおよびスキーマ ビューに表示されるオブジェクト

ソリューション エクスプローラでは、プロジェクトに含まれるファイルと、オブジェクトで使用される定義を含むファイルを操作します。 ソリューション エクスプローラでは、名前の変更リファクタリングは使用できません。 ソリューション エクスプローラは、プロジェクトをバージョン管理にチェックインする場合など、ファイルを操作するときに使用します。

スキーマ ビューでは、データベース オブジェクトを操作します。 スキーマ ビューは、オブジェクトの定義を含むファイルではなく、オブジェクトを操作するときに使用します。 たとえば、スキーマ ビューを使用して、データベース オブジェクトを作成できます。

オブジェクト名の解決

通常、SQL Server が使用する規則と同じ規則でオブジェクト名を解決する必要があります。 一部の sysobjects を正しく解決するために、完全修飾が必要になる場合があります。 完全修飾されていないオブジェクト名に関連して、エラーが表示された場合や予期しない動作に気付いた場合は、オブジェクト名を完全修飾して問題の解決を試みます。

オブジェクト定義のデータベース名の参照

データベース プロジェクトのオブジェクト定義スクリプトの中では $(databasename) トークンを使用できますが、次の制約が適用されます。

  • 次の例に示すように、トークンを角かっこで囲む必要があります。

    [$(databasename)]

  • 次の例に示すように、3 つの部分から成る名前を指定するためにトークンを使用することはできません。

    [$(databasename)].[dbo].[Table1]

次の例はストアド プロシージャで $(database) 名前トークンを使用する方法を示しています。

CREATE PROCEDURE [dbo].[MyProcedure]
@param1 INT = 0,
@param2 INT
AS
ALTER DATABASE [$(databasename)]
MODIFY FILEGROUP [FileGroup1] DEFAULT
RETURN 0

オブジェクト レベルの SET オプション

データベース プロジェクトに対して設定できる SET オプションには、データベース オブジェクト単位でも設定できるオプションが 2 つあります。 [ANSI NULL] と [引用符で囲まれた識別子] です。 既定では、各オブジェクトの SET オプションは、データベース プロジェクトの SET オプションと一致します。 これら 2 つのオプションは、[プロジェクトの既定値]、[オン]、または [オフ] に設定できます。 データベース プロジェクトをビルドするときには、プロジェクトの既定値と異なる値に設定された、オブジェクト レベルの SET オプションだけがビルド スクリプトに組み込まれます。

Aa833299.alert_note(ja-jp,VS.90).gifメモ :

[スクリプトのインポート] コマンドまたは [データベース スキーマのインポート] コマンドを使用した場合、個々のデータベース オブジェクトに対する SET オプションの値はインポートされません。 これらの値は、[プロパティ] ウィンドウで設定する必要があります。 詳細については、「方法 : オブジェクト レベルの SET オプションを指定する」を参照してください。

オブジェクトの検証

検証は、作成または変更したデータベース オブジェクトに変更を保存するときに実行されます。 オブジェクト定義で発生したエラーは、[エラー一覧] ウィンドウに表示されます。 エラー メッセージをダブルクリックするとオブジェクト定義が開き、エラーを修正できます。 スキーマ ビューでは、エラーが含まれるデータベース オブジェクトのアイコンに赤い感嘆符が表示されます。

Aa833299.alert_note(ja-jp,VS.90).gifメモ :

使用中のリリースでデータベース オブジェクトがサポートされない場合、そのオブジェクトのアイコンは、黄色の逆三角形になります。

データベース オブジェクトに関する問題を解決する方法の詳細については、「データベース プロジェクト、ビルド、および配置に関する問題のトラブルシューティング」を参照してください。

関連するシナリオ

参照

概念

データベースのビルドおよびステージング環境または稼動環境への配置

データベースのビルドおよび分離開発環境への配置

データベース オブジェクトへのすべての参照の名前を変更する

データベースの反復開発の実行

Database Edition の用語の概要