データベース オブジェクトおよびサーバー オブジェクトの作成と変更
データベース オブジェクトは、データベースの内容の構造を定義します。 これらのオブジェクトはデータベース プロジェクトに含まれます。データベース プロジェクトには、データ生成計画とスクリプトも含めることができます。 サーバー オブジェクトは、データベース内ではなくデータベース サーバー内にある、ログイン、証明書、カスタム エラー メッセージなどのオブジェクトを定義します。 サーバー オブジェクトはサーバー プロジェクトに含まれます。
ソリューション エクスプローラーでは、データ オブジェクトとサーバー オブジェクトの定義はファイルに含まれ、データベース プロジェクトまたはサーバー プロジェクト内で種類別にグループ化されます。 データベース オブジェクトおよびサーバー オブジェクトを操作する際には、オブジェクトが種類別にグループ化されて表示される、スキーマ ビューを使用するとわかりやすくなります。 データベース プロジェクト内のファイルが [ビルド] という Build Type でマークされている場合、そのファイルがデータベース オブジェクト定義について解析されます。 データベース プロジェクト内にあるが、異なる Build Type でマークされているファイルは、データベース オブジェクトを含まないファイルとして扱われ、スキーマ ビューには表示されません。
一般的なタスク
次の表に、このシナリオをサポートする一般的なタスクの説明と、それらのタスクを正常に完了する方法の詳細へのリンクを示します。
タスク |
関連する参照先 |
---|---|
実習を行う: 機能紹介のチュートリアルを実施することで、データベース プロジェクトとそのオブジェクトの作成方法、および作成したオブジェクトの変更方法を理解することができます。 |
|
データベース オブジェクトおよびサーバー オブジェクトの詳細を理解する: このトピックの後半では、名前が解決されるしくみ、オブジェクト定義内のデータベース名を参照する方法、オブジェクトがどのように検証されるかなど、データベース オブジェクトとサーバー オブジェクトの詳細について説明します。 |
|
データベース オブジェクト間の依存を理解する: データベース オブジェクトが依存するオブジェクトや、そのオブジェクトに依存するオブジェクトを表示できます。 |
|
データベース プロジェクトまたはサーバー プロジェクトにオブジェクトを追加する: 次のいくつかの方法を使用して、データベース プロジェクトまたはサーバー プロジェクトにオブジェクトを追加できます。
|
|
データベース プロジェクトまたはサーバー プロジェクトに特殊オブジェクトを追加する: プロジェクトに一部の種類のオブジェクトを追加するには、オブジェクトの種類に固有の、それぞれ若干異なる手順に従う必要があります。
|
|
データベース オブジェクトまたはサーバー オブジェクトを変更する: サーバー プロジェクトやデータベース プロジェクト内のオブジェクトの定義を変更できます。 これらのオブジェクトの、オブジェクト レベルの 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 オプションを指定する」を参照してください。
オブジェクトの検証
検証は、作成または変更したデータベース オブジェクトに変更を保存するときに実行されます。 オブジェクト定義で発生したエラーは、[エラー一覧] ウィンドウに表示されます。 エラー メッセージをダブルクリックするとオブジェクト定義が開き、エラーを修正できます。 スキーマ ビューでは、エラーが含まれるデータベース オブジェクトのアイコンに赤い感嘆符が表示されます。
注意
使用しているリリースでデータベース オブジェクトがサポートされていない場合は、そのオブジェクトのアイコンが下向きの黄色い三角形で表示されます。
データベース オブジェクトに関する問題を解決する方法の詳細については、「データベース プロジェクト、ビルド、および配置に関する問題のトラブルシューティング」を参照してください。
関連するシナリオ
データベース スクリプトの作成および変更
データベースの配置の前または後にアクションを実行するための、配置前スクリプトまたは配置後スクリプトを指定できます。 たとえば、配置後スクリプトを使用して、ルックアップ テーブルに参照データを追加できます。データベースのコードとデータのリファクタリング
データベース リファクタリングを使用して、反復タスクとエラーが発生する可能性のあるタスクの一部を除去できます。このようなタスクには、オブジェクトへのすべての参照の名前の変更、名前の完全修飾、ワイルドカード文字の拡張、オブジェクトの別のスキーマへの移動などがあります。データベースのビルドおよび分離開発環境への配置
プロジェクト内のオブジェクトを変更した後、その変更をビルドし、分離開発環境に配置します。データベース コードの分析によるコードの品質の向上
データベース コードを分析し、設計、名前付け、およびパフォーマンス上の一般的な問題を見つけて修正できます。Transact-SQL エディターを使用したデータベース スクリプトおよびオブジェクトの編集 (Microsoft Web サイト)
Transact-SQL エディターを使用して、スクリプトやデータベース オブジェクト定義を変更できます。