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

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

ソリューション エクスプローラーでは、データ オブジェクトとサーバー オブジェクトの定義はファイルに含まれ、データベース プロジェクトまたはサーバー プロジェクト内で種類別にグループ化されます。 データベース オブジェクトおよびサーバー オブジェクトを操作する際には、オブジェクトが種類別にグループ化されて表示される、スキーマ ビューを使用するとわかりやすくなります。 データベース プロジェクト内のファイルが [ビルド] という Build Type でマークされている場合、そのファイルがデータベース オブジェクト定義について解析されます。 データベース プロジェクト内にあるが、異なる Build Type でマークされているファイルは、データベース オブジェクトを含まないファイルとして扱われ、スキーマ ビューには表示されません。

一般的なタスク

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

タスク

関連する参照先

実習を行う: 機能紹介のチュートリアルを実施することで、データベース プロジェクトとそのオブジェクトの作成方法、および作成したオブジェクトの変更方法を理解することができます。

データベース オブジェクトおよびサーバー オブジェクトの詳細を理解する: このトピックの後半では、名前が解決されるしくみ、オブジェクト定義内のデータベース名を参照する方法、オブジェクトがどのように検証されるかなど、データベース オブジェクトとサーバー オブジェクトの詳細について説明します。

  • オブジェクト定義

  • ソリューション エクスプローラーおよびスキーマ ビューのオブジェクト

  • オブジェクト名の解決

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

  • オブジェクト レベルの 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 オプションだけがビルド スクリプトに組み込まれます。

注意

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

オブジェクトの検証

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

注意

使用しているリリースでデータベース オブジェクトがサポートされていない場合は、そのオブジェクトのアイコンが下向きの黄色い三角形で表示されます。

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

関連するシナリオ

参照

概念

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

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

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

データベース コードの記述と変更