次の方法で共有


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

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

ビュー内の列名の変更

ビルド エラーの影響

データ生成計画への影響

単体テストへの影響

Transact-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

注意

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

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

ビルド エラーの影響

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

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

データ生成計画への影響

Visual Studio Premium または Visual Studio Ultimate でデータベース オブジェクトの名前を変更すると、そのオブジェクトを参照するデータ生成計画の更新が試みられます。 ただし、次の点を考慮する必要があります。

  • オブジェクトの名前を変更する前に、エディターで開いているデータ生成計画をすべて保存する必要があります。 オブジェクトの名前を変更しようとしたときに開いているデータ生成計画があると、開いているすべてのデータ生成計画が保存されて自動的に閉じられ、名前変更操作が続行されます。

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

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

単体テストへの影響

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

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

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

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

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

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

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

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

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

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

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

セキュリティ

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

参照

概念

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