データベース オブジェクトへのすべての参照の名前を変更する
データベース リファクタリングを使用すると、名前を変更したデータベース オブジェクトへの参照を短時間で正確に更新できます。 データベース プロジェクト内のデータベース オブジェクトの名前を変更した場合は、そのオブジェクトへの参照をすべて更新して、新しい名前で参照できるようにする必要があります。 たとえば、名前を変更したテーブル列を参照しているストアド プロシージャがあれば、すべて更新する必要があります。
リファクタリングを使用することで、オブジェクト間の依存関係を手動で追跡することなく、データベース プロジェクト全体のすべての参照を一度に更新できます。 sp_depends を使用して依存関係を検出した場合も、その情報が常に正確に取得されるとは限らず、参照の更新も個々に行う必要があります。
リファクタリングを使用すると、次の種類のオブジェクトの名前を自動的に変更できます。
テーブル
テーブル、ビュー、および関数に表示される列
ストアド プロシージャ パラメータ
また、データ生成計画、スクリプト、および単体テストも、リファクタリングを使用して更新できます。 詳細については、「Considerations before Renaming Database Objects」を参照してください。
既定では、定義によって 1 つまたは複数の警告またはエラーが発生するオブジェクトは、リファクタリングの更新の対象になりません。 さらに、リファクタリングでは、名前が変更されたオブジェクトの定義を含む .sql ファイルの名前は自動的に更新されません。このファイルの名前は、ソリューション エクスプローラで手動で変更できます。
名前の変更リファクタリングのその他の用法
名前の変更リファクタリングを使用すると、次のような一般的なタスクも実行できます。
大文字と小文字が区別されない環境でさまざまな綴りが混在しているとき、オブジェクトの名前とそのすべての参照について、大文字と小文字の使い分けを社内的な慣例に合わせて変更する。 たとえば、データベース プロジェクトに "Myid" と "MyID" の両方の参照が混在している場合、名前の変更リファクタリングを使用することで、すべての参照を "MyID" に変更できます。
メモ : 既に正しい綴りになっている参照も同じ値に更新されます。 このような参照を含むファイルがバージョン管理されていた場合、そのファイルは、リファクタリング操作の過程でチェックアウトされます。
複数のオブジェクト名を、その名前と参照が一致するように変更する。 たとえば、"Person" と "Person Name" などの 2 つのスキーマ名をマージできます。 大文字と小文字が区別される環境で、大文字と小文字の表記だけが異なる 2 つの名前 (たとえば "MyID" と "Myid") もマージできます。
オブジェクトの名前付けに関するベスト プラクティスに従い、スキーマ オブジェクトの名前とそのすべての参照の前後に角かっこを追加する。たとえば、"MyID" という名前のすべての参照を "[MyID]" に置き換えることができます。
メモ : 既に角かっこで囲まれている参照も同じ値に更新されます。 このような参照を含むファイルがバージョン管理されていた場合、そのファイルは、リファクタリング操作の過程でチェックアウトされます。
以上の作業を実行した場合、その名前のオブジェクトが既に存在することを警告するエラー メッセージが表示されます。変更を行うには、[はい] をクリックする必要があります。 ただし、[名前の変更] ダイアログ ボックスで [変更のプレビュー] チェック ボックスがオンのままになっている場合は、個々の変更をプレビューし、変更対象から除外できます。
リファクタリング ログによる変更意図の保持
データベース オブジェクトの名前を変更すると、データベース プロジェクトのリファクタリング ログにエントリが追加されます。 変更を配置するときにこのログを使用した場合は、ターゲット環境内の対応するオブジェクトを意図したとおりの名前に変更できます。 それ以外の場合、既存のオブジェクトが削除され、オブジェクトは新しい名前で追加されます。 ログは、ProjectName.refactorlog という名前の XML ファイルに保持されます。 データベース プロジェクトを構成するその他のファイルをチェックインするときに、このファイルをバージョン管理システムにチェックインします。 このログ ファイルは、[名前の変更] ダイアログ ボックスの [リファクタリング ログの生成] チェック ボックスをオンにしたときに作成されるオプションのファイルとは異なります。 オプション ファイルでは、選択したチェック ボックスで実行したすべてのリファクタリング操作の記録が提供されます。 ProjectName.refactorlog ファイルには、配置時に特殊な処理が必要なリファクタリング操作に関する情報のみが含まれています。
配置
リファクタリングを使用すると、運用データベースではなく、データベース プロジェクトのみが更新されます。 この方法により、バージョン管理やチーム開発など、データベース プロジェクトのすべての利点を利用できます。 データベース プロジェクトをビルドすると、すべてのリファクタリング ログ ファイルがプロジェクトの \sql フォルダの transaction.refactorlog ファイルにマージされます。 変更を配置するとき、そのマージされたリファクタリング ログ ファイルにより、データベース プロジェクトに対する変更の意図を保持できます。
詳細については、「データベースのビルドおよび分離開発環境への配置」を参照してください。
メモ : |
---|
チーム環境では、アプリケーションとデータベースの単体テストを実行してから、変更を運用サーバーに配置する必要があります。 詳細については、「チーム データベース開発の開始」を参照してください。 |
名前を変更する前の考慮事項
次の説明のいずれかに該当する場合は、データベース オブジェクトへの参照の名前を変更する前に、特別な考慮事項を理解しておく必要があります。
ビュー内の列の名前を変更する。
正常なビルドの妨げになっている 1 つまたは複数のエラーを含むデータベース プロジェクト内のオブジェクトの名前を変更する。
保存していないデータ生成計画が開いている。
プロジェクト内にデータ バインド ジェネレータを使用するデータ生成計画がある。
完全修飾名を使用しないデータベースの単体テストがあり、それらのテストが、他のスキーマまたはデータベースを参照している。
完全修飾名を使用しないデータベース スクリプトがプロジェクト内にあり、それらのスクリプトが、他のスキーマまたはデータベースを参照している。
これらのシナリオにおける特別な考慮事項については、「データベース オブジェクト名の変更に関する考慮事項」を参照してください。
一般的なタスク
次の表に、このシナリオをサポートする一般的なタスクの説明と、それらのタスクを正常に完了する方法の詳細へのリンクを示します。
タスク |
関連するトピック |
---|---|
実習を行う : チュートリアルに従って作業すると、他の種類のリファクタリングに加え、データベース オブジェクトを別のスキーマに移動する方法を習得できます。 また、入門編のチュートリアルを完了することで、データベース開発ライフ サイクルの一部としてリファクタリングをどのように使用されるかを理解することもできます。 |
|
データベース オブジェクトの名前を変更する : リファクタリングを使用すると、データベース プロジェクト内のデータベース オブジェクトへのすべての参照を変更できます。 リファクタリング操作の一部として、適用する前に変更を確認できます。 |
|
リファクタリング操作を元に戻す : リファクタリング操作を元に戻す必要がある場合は、Visual Studio の現在のセッションのリファクタリング操作を元に戻すことができます。 |
|
データベース リファクタリングの変更を配置する : データベース プロジェクトをリファクタリングした後、ターゲット データベースに変更を配置する必要があります。 通常、バージョン コントロールにチェックインする前に、分離開発環境に変更を配置してテストします。 |
|
問題をトラブルシューティングする : データベース リファクタリングに関する一般的な問題をトラブルシューティングする方法についてさらに詳しく学習できます。 |