パソコン情報

【SqlServer】データベース復元するとビューやストアドも戻ってしまう事から始まったテーブルだけ復元する方法

ココがダメ

SqlServerにテーブルだけ復元する機能があれば今回の手法は必要なかった

しかし、探しても方法が無く仕方なく別の方法でテーブルだけ復元しました。

(手順1)データベースを複製し別のデータベースを作成

テーブルを戻したいデータベースを複製して、別のデータベースを作成するところから始まります。

データベース」を右クリックして、「データベースの復元」を選択します。

復元したいテーブルのバックアップファイルを選択して、OKします。

そして、転送先のデータベースがデフォルトで

現在のデータベース名になっていると思いますので、それを複製したいデータベース名に変更するだけ

です。

自分の場合は、「Logistics_testdata」という名前にしてデータベースの複製をしました。

(手順2)データベースから復元したいテーブルを消す

もちかしたら違う方法があるのかもしれませんが仕方ありません。

まず、現在のデータベースから、復元したいテーブルだけを消します。

自分の場合は、上の図のように、3つのテーブルを復元させたかったので消しました。

消し方は、右クリックして「削除」なので簡単ですね。

(手順3)クエリを作成して実行するだけ

あとは、下記のクエリを実行するだけです。

SELECT * INTO Logistics.dbo.[stock] FROM Logistics_testdata.dbo.[stock]

SELECT * INTO Logistics.dbo.[arrival] FROM Logistics_testdata.dbo.[arrival]

SELECT * INTO Logistics.dbo.[order] FROM Logistics_testdata.dbo.[order]

 

コードを見ればすぐに分かると思いますが、

 

SELECT * INTO 復元先データベース名.dbo.[テーブル名] FROM 復元元データベース名.dbo.[テーブル名]

 

というコードで実行すれば、テーブルの復元ができることになります。

 

参考

ちょっと話は反れますが、復元元のテーブル名が違くても復元(インポート)はされます。
そのテーブル名でViewなどを組んでいると勿論動きませんので注意が必要です。
私は、このテーブル名で一文字違うだけで1時間を費やしてしまいました。

 

何回も行ってしまいますが、

注意ポイント

バックアップしたデータベースから、テーブルだけを戻すとか、Viewやストアドなどを指定して復元する方法があるなら、こんな作業は必要ありません。

ぜひ、その方法があったら教えてほしいです。