シナリオ: データベース スクリプトの作成および変更

データベース スクリプトは、Transact-SQL (T-SQL) ステートメントを含む追加ファイルであるか、データベース スキーマの定義の一部ではない SQLCMD などのユーティリティです。 データベース スクリプトを配置手順の一部 (配置前スクリプトおよび配置後スクリプト) として使用したり、データベース プロジェクトに一般的な管理スクリプトを格納したりできます。

データベース オブジェクトの名前を変更する場合は、データベース リファクタリングを使用すると、スクリプトでそのオブジェクトへのすべての参照を自動的に更新できます。

配置のスクリプト

データベース プロジェクトをビルドすると、配置前スクリプト、データベース オブジェクトの定義、および配置後スクリプトが 1 つのデータベース スキーマ ファイル (.dbschema) にコンパイルされます。 配置前スクリプトおよび配置後スクリプトはそれぞれ 1 つだけ指定できますが、SQLCMD を使用すると、これらのスクリプト内にある他のスクリプトを含めることができます。 詳細については、「配置前の手順または配置後の手順に複数のスクリプトを含める」を参照してください。データベース プロジェクトをビルドすると、スクリプトにインクルードされているすべてがビルド スクリプトにマージされます。

既定では、データベース プロジェクトには、空の配置前スクリプトと空の配置後スクリプトが格納されています。 これらのスクリプトの名前は、script.predeployment.sql および script.postdeployment.sql です。

配置前スクリプトに指定するには、スクリプト ファイルの [ビルド アクション] プロパティを PreDeploy に設定します。同じように、配置後スクリプトに指定するには、スクリプト ファイルの [ビルド アクション] プロパティを PostDeploy に設定します。 スクリプトを配置前スクリプトまたは配置後スクリプトとして指定し、続いて他のスクリプトを同じ方法で指定すると、最初のスクリプトのビルド アクションは自動的に [ビルド内にありません] に設定されます。 各データベース プロジェクトに指定できるのは配置前スクリプト 1 つと配置後スクリプト 1 つのみなので、この動作は仕様によるものです。

Dd193251.alert_caution(ja-jp,VS.90).gif重要 :

配置スクリプトが参照するオブジェクトの名前または特性を変更しても、スクリプトの参照を更新しないと、配置に失敗する可能性があります。 たとえば、配置後スクリプトでテーブルにデータを挿入することがあります。 そのテーブルの名前を変更してもスクリプトを更新しないと、INSERT ステートメントの実行に失敗します。 名前の変更リファクタリングを使用してテーブル名を変更すると、配置スクリプトはリファクタリング操作の一部として更新されます。

配置前の手順または配置後の手順に複数のスクリプトを含める

配置前または配置後の手順で複数のスクリプトを使用するには、最上位のスクリプトを指定し、次のステートメントを使用して、その中に他の配置前スクリプトまたは配置後スクリプトを含める必要があります。

SQLCMD :r.\FileName.sql

追加のスクリプト

配置スクリプトのほか、汎用的な他のスクリプトもデータベース プロジェクトに追加できます。 データベース プロジェクト内の Scripts フォルダの下にサブフォルダを作成すると、これらのスクリプトを整理できます。 T-SQL エディタでこれらの追加のスクリプトのいずれかを開くと、データベース サーバーに接続し、そのスクリプトの全体または一部を実行できます。 定期的に監査スクリプトを実行する場合は、この方法が便利です。それは、各スクリプトを関連付けられたデータベースと一緒に保持しながら、データベース スキーマと同じバージョン コントロール システムでスクリプトとデータベースの両方を管理できるためです。これらのスクリプトの [ビルド アクション] プロパティは Not in Build に設定されます。

一般的なタスク

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

タスク

関連する参照先

配置前スクリプトまたは配置後スクリプトを指定する : データベースを配置する前または後に実行するスクリプトに T-SQL ステートメントを追加できます。 データベースからオブジェクトと設定をインポートすると、配置スクリプトは、データベース オブジェクトではない、アクセス許可、ロール定義、署名などのステートメントで更新される可能性があります。

方法 : 配置前スクリプトまたは配置後スクリプトを指定する

管理スクリプトまたはユーティリティ スクリプトを指定する : 管理スクリプトとユーティリティ スクリプトをデータベース プロジェクトに追加できます。 また、データベース プロジェクト内のオブジェクトをリファクタするときに、スクリプトを更新できます。

方法 : 管理スクリプトをデータベース プロジェクトに追加する

データベース コードとデータのリファクタ

変更をチェックインする : スクリプトをバージョン コントロールにチェックインし、チームでそれらを共有できます。 バージョン コントロールでスクリプトを管理することにより、古いバージョンのデータベースを提供する必要がある場合に、そのバージョンに対応する配置スクリプトと保守スクリプトを保存および取得できます。

方法 : プロジェクトまたはソリューションをバージョン管理に追加する

[チェックイン] ウィンドウと [保留中の変更] ウィンドウの使用

方法 : 保留中の変更をチェックインする

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

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

関連するシナリオ

参照

概念

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

Database Edition の用語の概要

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

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

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