2016-12-15 5 views
0

Microsoft SQL Server 2014を使用して、テーブル構造の再構築を必要とする操作を実行しています。我々は2つの方法に我々のアプローチを絞り込んていますSQL Serverはどのように内部的にテーブルの名前を変更しますか?

  1. は、新たに「一時的な」テーブル(未#TempTable一種)を作成し、一時テーブルにデータをダンプし、オリジナルを削除して、再びデータをダンプします。
  2. 既存のテーブルの名前を変更し、新しいテーブルを作成して、tempからnewにデータをダンプします。

私の同僚は#1を選択することが理想的だと主張しています。しかし、#1には#2の2倍の時間がかかると確信しています(大量のストレージを消費するBLOBデータがあるため)。同僚は、内部的にテーブルの名前を変更すると、SQL Serverは新しいテーブルを作成し、データをダンプすると主張しています。私は非常に同意しない。私は、SQL Serverが単に既存のテーブルの名前を変更することを確信しています。これがどのように実際に機能しているかを検索しながら、私は何の情報も見つけることができません。

SQL Server内部でテーブルの名前を変更する方法はありますか。新しいテーブルを作成し、データをダンプしてから、古いテーブルを削除しますか?それとも単に名前を変更するのですか?

+0

一時テーブルでは、接続のためだけに良好であり、範囲は、すべてのデータを失う可能性があるので、私はこのルートを行くだろうなに限定され#tempTableを意味する場合。 – scsimon

+0

@scsimonいいえ、SQL Serverの "Temp Table"の定義はありません。 –

+1

の場合、オプション2はそのままです。私はドキュメントを見つけることができませんが、最初のロジックに近いものは聞いたことがなく、なぜSQL Serverがこのように動作するのか想像できません。 – scsimon

答えて

2

意味がありますか?

sp_helptext 'sp_rename' 
+1

または具体的には、そのSPの中で、 'EXEC %% Object(ID = @objid).SetName(Name = @newname) –

+0

@JerryDodge正直言って、初めてsp_renameストアドプロシージャを見直しました。あなたが言ったように、それはsysobjectsテーブルのテーブル名だけを更新するようです。良いアイデア :) – doganak

関連する問題