データベース オブジェクト名の変更に関する考慮事項

Visual Studio Team System Database Edition のデータベース オブジェクトの名前を変更する前に、以下の問題を考慮する必要があります。

ビュー内の列名の変更

ビルド エラーの影響

データ生成計画への影響

単体テストへの影響

T-SQL スクリプトへの影響

ビュー内の列名の変更

ビューは、テーブルまたは他のビューから列を選択するステートメントで構成されます。 ビューで使用されるテーブルは、ベース テーブルまたは基になるテーブルと呼ばれます。 たとえば、次のコードでは、HumanResources.Employee テーブルに基づくビューが作成されます。

CREATE VIEW dbo.vEmployeeTest
AS 
     SELECT EmployeeID, Title
       FROM HumanResources.Employee

ビュー内の列名を変更しても、基になるテーブル内の列名は変更されません。 代わりに、次の例に示すように、ビュー内の名前にエイリアスが設定されます。

CREATE VIEW dbo.vEmployeeTest
AS 
     SELECT EmployeeID, Title AS JobTitle
       FROM HumanResources.Employee

CREATE VIEW dbo.vEmployeeTest (EmployeeID, JobTitle)
AS 
     SELECT EmployeeID, Title
       FROM HumanResources.Employee
Aa833400.alert_note(ja-jp,VS.90).gifメモ :

ビューが基になるテーブルから SELECT * を使用してデータを取得する場合、* が展開され、個々の列が一覧表示されます。 名前を変更された列には、前の例のようにエイリアスが設定されます。

ビューと基になるテーブルの両方で列名を変更する場合は、ビューではなくテーブル内の列名を変更すると、ビュー内の列が自動的に更新されます。

ビルド エラーの影響

Database Edition のデータベース オブジェクトの名前を変更すると、そのオブジェクトを参照している他のデータベース オブジェクト、データ生成計画、単体テスト、およびスクリプトの更新が試みられます。 データベース プロジェクトでの作業中に、ビルド エラーを発生させるアクションを実行した後で、そのビルド エラーを修正する別のアクションを実行することがあります。 たとえば、テーブルを削除した後で、そのテーブルに依存するビューを更新して、削除されたテーブルへの参照を削除できます。 このとき、テーブルの削除とビューの更新の間に、プロジェクト内でビルド エラーが発生します。

プロジェクト内にビルド エラーがあるときにデータベース オブジェクトの名前を変更すると、その名前自体は正しく変更できます。 しかし、名前を変更したオブジェクトへの参照の一部が正しく更新されない可能性があります。 プロジェクト内にビルド エラーがある場合は、[変更のプレビュー] ダイアログ ボックスに警告が表示されます。 このまま操作を続けた場合、オブジェクトの名前が変更され、可能な限り多くの参照が更新されます。 操作をキャンセルした場合は、ビルド エラーを修正してから名前の変更操作を再試行できます。

[変更のプレビュー] ダイアログ ボックスには、次のものに関する警告が表示されます。

  • データベース プロジェクト内のビルド エラー

  • スクリプトおよび単体テスト内の構文エラー

  • 形式の正しくないデータ生成計画

データ生成計画への影響

Team Edition for Database Professionals でデータベース オブジェクトの名前を変更すると、そのオブジェクトを参照しているデータ生成計画が更新されます。 ただし、次の点を考慮する必要があります。

  • オブジェクトの名前を変更する前に、エディタで開いているデータ生成計画をすべて保存する必要があります。 オブジェクトの名前を変更しようとしたときに開いているデータ生成計画があると、最初にそれを保存するよう求められます。 このまま操作を続けた場合、開いているすべてのデータ生成計画が自動的に保存されて閉じられ、名前の変更操作が続行されます。 操作を続けない場合は、名前の変更操作がキャンセルされます。 データ生成計画は開いたままになり、保存されません。

  • データ バインド データ ジェネレータを使用するデータ生成計画は、手動で更新する必要があります。

詳細については、「データ ジェネレータを使用してデータベースのテスト データを生成する」を参照してください。

単体テストへの影響

単体テストの Transact-SQL (T-SQL) ステートメントは、通常、単体テストの ValidationConnectionString および ExecutionConnectionString で指定されたデータベース内のオブジェクトを参照します。 次の 2 つの場合は、このケースに該当しません。

  • 単体テストの T-SQL ステートメントが、他のデータベース内のオブジェクトを参照している場合。

  • 単体テストの T-SQL ステートメントが、同じデータベース内の別のスキーマ (SQL Server 2005) のオブジェクトを参照している場合。

Database Edition のデータベース オブジェクトの名前を変更すると、ソリューション内の、そのオブジェクトを参照している単体テストの更新が試みられます。 上記のケースでは、単体テストを更新できない場合があります。 データベース オブジェクトの名前を変更したときに単体テストを更新するには、単体テスト内のオブジェクトに完全修飾名を使用していることを確認する必要があります。 単体テストで完全修飾名を使用している場合は、スキーマ オブジェクトの名前を変更すると必ず、リファクタリング エンジンによって単体テストが更新されます。

単体テストの詳細については、「単体テストによる既存のデータベース コードの検証」を参照してください。

T-SQL スクリプトへの影響

データベース プロジェクトの T-SQL スクリプトは、通常、データベース プロジェクトのデータベース内のスキーマ オブジェクトを参照します。 次の 2 つの場合は、このケースに該当しません。

  • スクリプトの T-SQL ステートメントが、他のデータベース内のオブジェクトを参照している場合。

  • スクリプトの T-SQL ステートメントが、同じデータベース内の別のスキーマ (SQL Server 2005) のオブジェクトを参照している場合。

Database Edition のデータベース オブジェクトの名前を変更すると、ソリューション内の、そのオブジェクトを参照しているスクリプトの更新が試みられます。 上記のケースでは、スクリプトを更新できない場合があります。 データベース オブジェクトの名前を変更したときにスクリプトを更新するには、スクリプト内のオブジェクトに完全修飾名を使用していることを確認する必要があります。 スクリプトで完全修飾名を使用している場合は、スキーマ オブジェクトの名前を変更すると必ず、リファクタリング エンジンによってスクリプトが更新されます。

スクリプトの詳細については、「シナリオ: データベース スクリプトの作成および変更」を参照してください。

セキュリティ

エラーが発生してリファクタリング操作が正常に実行できなかった場合、そのエラーに関する情報がアプリケーションのイベント ログに出力されます。このログは、"通常のユーザー" 権限を持つユーザーであれば、だれでも参照できます。 機密扱いのスキーマ情報がログに記録されている可能性がある場合は、ログを消去するか、クライアント コンピュータへのアクセスを制限する必要があります。

参照

概念

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

Database Edition の用語の概要