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

データベース リファクタリングを使用すると、名前が変更されたデータベース オブジェクトへの参照をよりすばやく正確に更新できます。 データベース プロジェクト内のデータベース オブジェクトの名前を変更する場合、そのオブジェクトが新しい名前で参照されるように、オブジェクトへの参照もすべて更新する必要があります。 たとえば、名前を変更したテーブルの列を参照するストアド プロシージャを更新する必要があります。

リファクタリングを使用することで、データベース プロジェクト全体で参照を更新できます。相互に依存するオブジェクトを手動で追跡し、参照を 1 つずつ更新する必要はありません。 sp_depends を使用して依存関係を調べるとしても、依存関係情報が常に正確に取得されるとは限らないため、各参照を更新する必要があります。

リファクタリングを使用すると、次の種類のオブジェクトの名前を自動的に変更できます。

  • テーブル

  • テーブル、ビュー、および関数に表示される列

  • ストアド プロシージャ パラメーター

リファクタリングを使用すると、データ生成計画、スクリプト、および単体テストを更新することもできます。 詳細については、「データベース オブジェクト名の変更に関する考慮事項」を参照してください。

既定では、オブジェクトの定義に 1 つ以上の警告またはエラーが存在する場合、リファクタリングではオブジェクトが更新されません。 また、名前を変更したオブジェクトの定義を含む .sql ファイルの名前も、自動的には更新されません。 このファイルの名前は、ソリューション エクスプローラーで手動で変更できます。

名前の変更リファクタリングのその他の用法

次のような一般的な作業にも、名前の変更リファクタリングを使用できます。

  • 大文字と小文字が区別されない環境であるために、さまざまな綴りが混在しているとき、オブジェクトの名前とそのすべての参照について、大文字と小文字の使い分けを社内的な慣例に合わせて変更できます。 たとえば、データベース プロジェクトに "Myid" と "MyID" の両方の参照が混在している場合、名前の変更リファクタリングを使用することで、すべての参照を "MyID" に変更できます。

    注意

    既に正しい綴りになっている参照も同じ値に更新されます。 このような参照を含むファイルがバージョン コントロールされていた場合、そのファイルはリファクタリング操作の過程でチェックアウトされます。

  • 複数のオブジェクト名を、その名前と参照が一致するように変更できます。 たとえば、2 つのスキーマ名 ("Person" と "Person Name" など) をマージできます。 大文字と小文字が区別される環境で、大文字と小文字の区別だけが異なる 2 つの名前 ("MyID" と "Myid" など) をマージすることもできます。

  • オブジェクトの名前付けに関するベスト プラクティスに従い、スキーマ オブジェクトの名前とそのすべての参照の前後に角かっこを追加できます。 たとえば、"MyID" という名前のすべての参照を "[MyID]" に置き換えることができます。

    注意

    既に角かっこで囲まれている参照も同じ値に更新されます。 このような参照を含むファイルがバージョン コントロールされていた場合、そのファイルはリファクタリング操作の過程でチェックアウトされます。

以上の作業を実行した場合、その新しい名前のオブジェクトが既に存在することを警告するエラー メッセージが表示されます。 変更を行うには、[はい] をクリックする必要があります。 ただし、[名前の変更] ダイアログ ボックスで [変更のプレビュー] チェック ボックスがオンのままになっている場合は、個々の変更をプレビューし、変更対象から除外できます。

リファクタリング ログでの意図の保持

データベース オブジェクトの名前を変更すると、データベース プロジェクトのリファクタリング ログにエントリが追加されます。 変更を配置する場合、配置先環境内の対応するオブジェクトが意図した名前に変更されたことを確認するのに、このログが役立ちます。 名前が変更されない場合、既存のオブジェクトが削除され、新しい名前のオブジェクトが追加されます。 このログは、プロジェクト名.refactorlog という名前の XML ファイルに保持されます。 データベース プロジェクトを構成する他のファイルをバージョン コントロール システムにチェックインするときに、このファイルもチェックインします。 プロジェクト名.refactorlog ファイルには、配置の実行中に特別な処理が必要なリファクタリング操作に関する情報のみが格納されます。

配置

リファクタリングを使用すると、運用データベースではなく、データベース プロジェクトのみが更新されます。 この方法により、バージョン コントロールやチーム開発など、データベース プロジェクトのすべての利点を利用できます。 データベース プロジェクトをビルドすると、プロジェクトの \sql フォルダーにある transaction.refactorlog ファイルにすべてのリファクタリング ログ ファイルがマージされます。 変更を配置するときに、データベース プロジェクトに対する変更の意図をそのマージされたリファクタリング ログ ファイルに保持できます。

詳細については、「データベースのビルドおよび分離開発環境への配置」を参照してください。

注意

チーム環境では、アプリケーション単体テストおよびデータベース単体テストを実行してから、変更を運用サーバーに配置する必要があります。 詳細については、「データベースのチーム開発の開始」を参照してください。

名前を変更する前の考慮事項

次のいずれかに当てはまる場合、データベース オブジェクトへの参照の名前を変更する前に、その他の考慮事項を理解しておく必要があります。

  • ビュー内の列名を変更する。

  • データベース プロジェクトの正常なビルドを妨げる 1 つ以上のエラーを含むデータベース プロジェクト内のオブジェクト名を変更する。

  • 未保存のデータ生成計画が開いている。

  • データ バインド ジェネレーターを使用するデータ生成計画がプロジェクト内にある。

  • 完全修飾名を使用しないデータベース単体テストがあり、そのテストが他のスキーマまたはデータベース内のオブジェクトを参照している。

  • 完全修飾名を使用しないデータベース スクリプトがプロジェクト内にあり、そのスクリプトが他のスキーマまたはデータベース内のオブジェクトを参照している。

これらのシナリオの特別な考慮事項の詳細については、「データベース オブジェクト名の変更に関する考慮事項」を参照してください。

一般的なタスク

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

タスク

関連する参照先

実習を行う: チュートリアルに従って作業すると、他の種類のリファクタリングに加え、データベース オブジェクトを別のスキーマに移動する方法を習得できます。 入門編のチュートリアルを完了すると、データベース開発ライフ サイクルの一部としてリファクタリングを使用する方法も理解できます。

データベース オブジェクトの名前を変更する: リファクタリングを使用すると、データベース プロジェクト内のデータベース オブジェクトへの参照をすべて変更できます。 リファクタリング操作の一部として、適用前に変更をプレビューできます。

リファクタリング操作を元に戻す: リファクタリング操作を元に戻す必要がある場合は、Visual Studio の現在のセッションのリファクタリング操作を元に戻すことができます。

データベース リファクタリングの変更を配置する: データベース プロジェクトをリファクタリングした後、対象データベースに変更を配置する必要があります。 通常、バージョン コントロールにチェックインする前に、分離開発環境に変更を配置してテストします。

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

関連するシナリオ

サーバーまたはデータベースへの参照の名前変更

別のスキーマへのデータベース オブジェクトの移動

データベース オブジェクトの名前の完全修飾

SELECT ステートメントでのワイルドカード文字の展開

参照

概念

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

データベース プロジェクトとサーバー プロジェクトの概要