- - PR -
データベースの設定やテーブル構造だけバックアップする方法
1
| 投稿者 | 投稿内容 | ||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2006-09-21 11:46
いつもお世話になってます。
現在、1つのレポート用の巨大なデータベースがあり (俗にゆう読み取り専用のデータウェアハウス)、 データ自体は毎日更新されます。2つほど質問があるのですが 1. データベースの構造やテーブルなどの構造だけをバックアップすることは可能か? (そうすることで、バックアップ時間を極力短くする、ただいいざというときのためテーブルの構造だけは保存しておいて、データだけは流し込める状態にしておきたい) 2. 差分でデータを追加しているような特定のテーブルだけは、 他のデータソースからそのまま流しこんですべてのデータが普及されるのが複雑になるかもしれないので特定のテーブルだけは保存したい。 こういったことは可能なのでしょうか? アクセスですらテーブルをコピーするときにできるので可能だとは思いますが。 つかっているのはSQLサーバー2005です もちろん 1.データベースコピーして、 2.すべてのテーブル名をsysobjects などのobjectのシステムテーブルから もってきて (SQL 2000までMASTERというシステムデータベースにこれがあったんですけど SQL 2005ではなくなってしまいました、どこにいったんでしょうか?) 3.それをすべてTRUNCATEして、 4.必要であれば容量をちじめるためそのデータベースをSHRINKして、 5. Detachして 6. DatafileとLogfileコピーして とバッチにしてそれをスケジュールにいれればできないことはなさそうですが (上のやりかたは素人的かもしれません)、 大変です。 もっと簡単にできる方法はあるのでしょうか? アドバイスいただければ幸いです。 ちなみに書いててきになってしまったのですが SQL2000にあったmasterのdbo.sysobject テーブル SQL2005ではどこにいってしまったのでしょうか? | ||||||||||||
|
投稿日時: 2006-09-21 13:32
構造だけ取っておきたいなら、Management Studio上で対象データベースを
選んで、タスク→スクリプト生成、でどうでしょうか。 | ||||||||||||
|
投稿日時: 2006-09-21 13:48
こんにちは。
可能です。 GUI なら vincentさんが提案された方法でできますし、プログラムを組むなら SQL Server 管理オブジェクト (SMO) を利用する方法があります。 たとえばテーブルの構造ならこんな感じです。c# です。 Microsoft.SqlServer.ConnectionInfo と Microsoft.SqlServer.Smo を参照しておいてください。
sys.sysobjects というビューとして存在しています。 SQL Server 2000 のときのシステムテーブルは SQL Server 2005 ではシステムビューというかたちにリニューアルされています。 Books Online の 互換性ビュー や SQL Server 2000 システム テーブルから SQL Server 2005 システム ビューへのマッピング をご覧ください。 _________________ 上本亮介 (ue) @ わんくま同盟 Microsoft MVP for VSTO (Jul 2008 - Jun 2009) Hello Another World! .NET 勉強会 / ヒーロー島 | ||||||||||||
|
投稿日時: 2006-09-22 03:26
ueさん、vincentさん
参考になります。本当にありがとうございました。 | ||||||||||||
1
