データベース スクリプトの作成および変更
データベース スクリプトは、Transact-SQL ステートメントを含む追加ファイルであるか、データベース スキーマの定義の一部ではない SQLCMD などのユーティリティです。 データベース スクリプトには、配置手順の一部 (配置前スクリプトおよび配置後スクリプト) として使用されるスクリプトもあれば、データベース プロジェクトに格納する一般的な管理スクリプトもあります。
データベース オブジェクトの名前を変更する場合、データベース リファクタリングを使用して、スクリプト内のそのオブジェクトに対するすべての参照を自動的に更新できます。
配置のスクリプト
データベース プロジェクトをビルドすると、配置前スクリプト、データベース オブジェクトの定義、および配置後スクリプトが 1 つのデータベース スキーマ ファイル (.dbschema) にコンパイルされます。 配置前スクリプトおよび配置後スクリプトは 1 つだけ指定できますが、SQLCMD を使用すると、これらのスクリプトから他のスクリプトをインクルードできます。 詳細については、「配置前手順または配置後手順における複数のスクリプトのインクルード」を参照してください。 データベース プロジェクトをビルドすると、スクリプトにインクルードされているすべてがビルド スクリプトにマージされます。
既定では、データベース プロジェクトに空の配置前スクリプトおよび空の配置後スクリプトが格納されます。 これらのスクリプトには、script.predeployment.sql および script.postdeployment.sql という名前が付けられています。
配置前スクリプトに指定するには、スクリプト ファイルの Build Action プロパティを PreDeploy に設定します。 同じように、配置後スクリプトに指定するには、スクリプト ファイルの Build Action プロパティを PostDeploy に設定します。 あるスクリプトを配置前スクリプトまたは配置後スクリプトとして指定し、次に、別のスクリプトを同じ方法で指定すると、最初のスクリプトのビルド アクションは自動的に [ビルド内にありません] と設定されます。 各データベース プロジェクトに指定できるのは配置前スクリプト 1 つと配置後スクリプト 1 つのみなので、この動作は仕様によるものです。
重要
配置スクリプトが参照するオブジェクトの名前または特性を変更しても、スクリプト内の参照を更新しないと、配置に失敗することがあります。 たとえば、配置後スクリプトのテーブルにデータを挿入できます。 テーブル名を変更してもスクリプトを更新しないと、INSERT ステートメントが失敗します。 名前の変更リファクタリングを使用してテーブル名を変更すると、配置スクリプトが更新されます。
配置前手順または配置後手順における複数のスクリプトのインクルード
配置前手順または配置後手順で複数のスクリプトを使用するには、最上位のスクリプトを指定し、その中で次のステートメントを使用して、他の配置前スクリプトまたは配置後スクリプトをインクルードする必要があります。
SQLCMD :r .\FileName.sql
追加のスクリプト
配置スクリプトのほか、汎用的な他のスクリプトもデータベース プロジェクトに追加できます。 データベース プロジェクト内の Scripts フォルダーの下にサブフォルダーを作成すると、これらのスクリプトを整理できます。 Transact-SQL エディターで追加のスクリプトの 1 つを開くと、データベース サーバーに接続し、そのスクリプトの全体または一部を実行することができます。 定期的に監査スクリプトを実行する場合は、この方法が便利です。各スクリプトを関連付けられたデータベースと一緒に保持しながら、データベース スキーマと同じバージョン コントロール システムでスクリプトとデータベースの両方を管理できるためです。 これらのスクリプトの Build Action プロパティは Not in Build に設定されます。
一般的なタスク
次の表に、このシナリオをサポートする一般的なタスクの説明と、それらのタスクを正常に完了する方法の詳細へのリンクを示します。
タスク |
関連する参照先 |
---|---|
配置前スクリプトまたは配置後スクリプトの指定: データベースの配置の前または後に実行するスクリプトに Transact-SQL ステートメントを追加できます。 データベースからオブジェクトと設定をインポートするときに、アクセス許可、ロール定義、署名など、データベース オブジェクトを表さないステートメントで配置スクリプトを更新できます。 |
|
管理スクリプトまたはユーティリティ スクリプトの指定: データベース プロジェクトに管理スクリプトおよびユーティリティ スクリプトを追加できます。 また、データベース プロジェクトのオブジェクトをリファクタリングするときに、スクリプトを更新することもできます。 |
|
変更のチェックイン: スクリプトをバージョン コントロールにチェックインして、チームでそれらを共有できます。 スクリプトをバージョン コントロールで管理することにより、古いバージョンのデータベースを処理する必要がある場合に、そのバージョンに一致する配置スクリプトおよび保守スクリプトを保存および取得できます。 |
|
問題のトラブルシューティング: データベースおよびサーバー プロジェクトに関する一般的な問題をトラブルシューティングする方法の詳細について学習できます。 |
関連するシナリオ
データベース オブジェクトおよびサーバー オブジェクトの作成と変更
プロジェクトのオブジェクト定義を変更するときにデータベースまたはサーバーを更新した後、これらの変更をターゲット データベースまたはサーバーに配置します。データベースのコードとデータのリファクタリング
データベース リファクタリングを使用して、反復タスクとエラーが発生する可能性のあるタスクの一部を除去できます。このようなタスクには、オブジェクトへのすべての参照の名前を変更すること、名前を完全修飾すること、ワイルドカード文字を拡張すること、オブジェクトを新しいスキーマに移動することなどがあります。データベースのビルドおよび分離開発環境への配置
プロジェクト内のオブジェクトを変更した後、その変更をビルドし、分離開発環境に配置します。データベース コードの分析によるコードの品質の向上
データベース コードを分析し、設計、名前付け、およびパフォーマンス上の一般的な問題を見つけて修正できます。