方法:名前の変更とリファクタリングを使用して、データベース オブジェクトを変更する
Transact-SQL エディターの [リファクター] コンテキスト メニューを使用すると、オブジェクトの名前を変更することも別のスキーマに移動することもできます。また、変更をコミットする前に、影響を受ける領域をすべてプレビューすることもできます。 [リファクター] メニューでは、データベース オブジェクトへのすべての参照を完全修飾することも、データベース プロジェクト内の SELECT
ステートメントに含まれるワイルドカード文字を展開することもできます。
警告
以下に示す手順では、「プロジェクト指向のオフライン データベース開発」セクションのこれまでの手順で作成したエンティティを使用します。
型名を変更するには
ソリューション エクスプローラーで Products テーブル (Products.sql) を右クリックし、[コードの表示] を選択して、Transact-SQL エディターでスクリプトを開きます。
スクリプト内の
[Products]
を右クリックし、[リファクター] をポイントして [名前の変更] を選択します。[新しい名前] の値を「Product」に変更します。 [変更のプレビュー] チェック ボックスをオンにしたまま [OK] をクリックします。
次の画面では、この名前変更操作による影響を受けるスクリプトの一覧をプレビューできます。 具体的には、
Products
を参照しているすべての箇所が強調表示されます。 この操作は、前の手順で学習した [すべての参照の検索] で行われるタスクによく似ています。 上のペインで任意の部分をクリックし、スクリプト内の実際の変更 (緑色で強調表示されます) を下のペインで確認します。[Apply] をクリックします。
テーブル デザイナーまたは Transact-SQL エディターで既に開いていたスクリプト ファイルについても、変化が生じた箇所は、Transact-SQL エディターの左側の緑色のバーで強調表示されています。
ソリューション エクスプローラーで、TradeDev.refactorlog が追加されていることに注意してください。 これをダブルクリックして開きます。 このセッションでのすべての変更が XML 表現で記述されています。
F5 キーを押してプロジェクトをビルドし、ローカル データベースに配置します。
SQL Server オブジェクト エクスプローラーの [ローカル] の下で、TradeDev データベースを右クリックして [更新] をクリックします。
[テーブル] を展開し、Products テーブルの名前が変更されていることを確認します。
Product を右クリックし、 [データの表示] をクリックします。 名前変更の操作を行っても、既存のデータはそのまま残ります。
警告
リファクター ログが削除されると、リファクタリングのすべての履歴が削除されます。 以前のリファクター操作が適用されていないデータベースにプロジェクトが公開されると、リファクター ファイルが削除される前に完了したリファクター操作は、削除操作および作成操作として公開されます。 その結果、データ損失が発生する場合があります。
ワイルドカードを展開するには
ソリューション エクスプローラーで [関数] ノードを展開し、GetProductsBySupplier.sql をダブルクリックします。
次に示す行のアスタリスクの部分にカーソルを置いて、右クリックします。 [リファクター] 、 [ワイルドカードの展開] の順にクリックします。
SELECT * from Product p
[変更のプレビュー] ダイアログ ボックスの上のペインで
SELECT * from Product p
をクリックして強調表示します。[変更のプレビュー] の下のペインで、次に示すスクリプトのように
*
が展開されていることを確認します。[Id], [Name], [ShelfLife], [SupplierId], [CustomerId]
[適用] をクリックします。 展開の操作で生じた変更を含む行が、左側の緑色のバーで強調表示されています。
データベース オブジェクト名を完全修飾するには
Transact-SQL エディターで GetProductsBySupplier.sql が開いていることを確認します。
次に示す行の
Product
の部分にカーソルを置いて、右クリックします。 [リファクター] をポイントし、 [完全修飾名] をクリックします。SELECT [Id], [Name], [ShelfLife], [SupplierId], [CustomerId] from Product p
[変更のプレビュー] ダイアログ ボックスの [適用] をクリックします。 すべてのオブジェクト参照が、オブジェクトのスキーマ名と、オブジェクトに親があれば親の名前を含む形式に更新されています。
SELECT [p].[Id], [p].[Name], [p].[ShelfLife], [p].[SupplierId], [p].[CustomerId] from [dbo].[Product] p
スキーマを移動するには
移動するオブジェクトを右クリックします。 [リファクター] 、 [移動スキーマ] の順にクリックします。
[新しいスキーマ] ボックスで、オブジェクトの移動先となるスキーマの名前を入力します。 [OK] をクリックします。
[変更をプレビューする] チェック ボックスをオンにした場合、 [変更のプレビュー] ダイアログ ボックスが表示されます。 それ以外の場合は、オブジェクト名が更新され、オブジェクトが新しいスキーマに移動します。