MSDE FunClub
Microsoft Data Engine FunClub
現在までのアクセスカウント数
Since 2005.07.30
最終更新日:2005/09/29
 
 [TOP]  > [MSDE技術サポート情報]   > [MSDE 2000 データベースのバックアップ] 
 
【MSDE 2000 データベースのバックアップ】
 
 

 
 
MSDE FunClub
メニュー
■ MSDE 2000
技術情報一覧に
戻る
■ MSDE 2000
初心者向け
メーリングリスト
ご案内
■ MSDE 2000
技術者向け
メーリングリスト
ご案内
■ HOME へ戻る
 
マイクロソフト
関連ページ
■ 文書番号:241397
Transact-SQL を使用した MSDE データベースのバックアップ方法
■ 文書番号:319930
Microsoft Desktop
Engine
に接続する方法
■ BACKUP命令
■ RESTORE命令
■ RESTORE HEADERONLY命令
 
 
MSDE 2000 データベースのバックアップ
 
MSDE2000 データベースバックアップ:0010]
MSDE 2000のデータベースをバックアップする方法について、参考になるドキュメントはありますか?
私が、SQL Serverユーザグループのボードリーダーを担当しているときに、連載したドキュメントがあります。まず最初にこのドキュメントをご覧下さい。
データベースのバックアップとリカバリの克服

また、私の書籍では、下巻第17章で、96ページを費やして、「バックアップと復旧について」解説をしております。まだ書籍をお買い求めされていない場合は、右側に表示されているアマゾンのアイコンをクリックして、お買い求めください。

 
MSDE2000 データベースバックアップ:0020]
上記の「データベースのバックアップとリカバリの克服」を読みました。このドキュメントはSQL Server 2000ユーザを対象に書かれておりませんか?
私はMSDE 2000ユーザで、Enterprise Managerを持っていません。
こんな私でも、バックアップできる方法を教えてください。
申し訳けありませんでした。確かにEnterprise Managerを使った解説をしておりますが、解説の中に使用したSQL文は、MSDE 2000でも使うことができます。

例えば、OSQLコマンドを起動して、次のようなSQL文を実行しましょう。

BACKUP  DATABASE  バックアップをしたいデータベースの名前 
   TO  DISK='バックアップ先書き込みファイル名'

このSQL文を実行すると、目的のデータベースの完全なバックアップ(全体バックアップとも呼ぶ)を実行することができます。

拡大表示します
 
MSDE2000 データベースバックアップ:0030]
私は、MSDE 2000ユーザです。私は、『差分バックアップ』や『トランザクションログバックアップ』などのバックアップ方法を理解しなければいけませんか?
理解すれば、役立つ場面があるかもしれませんが、必ずしも覚える必要はありません。
バックアップの基本は、『全体バックアップ(完全バックアップとも呼ぶ)』です。この方法を使ったバックアップを実践してください。
全体(完全)バックアップの命令は、Q2でも説明したように、
BACKUP  DATABASE  バックアップをしたいデータベースの名前 
   TO  DISK='バックアップ先書き込みファイル名'
の実行です。
 
MSDE2000 データベースバックアップ:0040]
全体バックアップ(完全バックアップとも呼ぶ)は、どのようなバックアップをするのでしょうか?
データベースを構成するすべてのファイル(データファイルとトランザクションログファイル)を、1つのバックアップファイルに、まとめ上げる作業をします。
バックアップファイルが手元にあれば、そこから元のデータファイルとトランザクションファイルを取り出すことができます(この作業がデータベースの『復元』です)。
 
MSDE2000 データベースバックアップ:0050]
全体バックアップ(完全バックアップ)を実行すれば、データベースサーバーのバックアップを実行したことになりますか?
いいえ、間違えないで下さい。
全体バックアップ(完全バックアップ)は、データベースサーバーに格納されたすべてのデータベースのバックアップを実行するものではありません。

MSDE 2000では、複数のデータベースを扱うことができます。

全体バックアップ(完全バックアップ)は、指定されたデータベースだけをバックアップする命令です。
ですからMSDE 2000に格納された、すべてのデータベースをバックアップしなければいけません。

データベースが10個あれば、それぞれのデータベースの名前を指定したバックアップ命令を合計10回、実行して下さい。

BACKUP  DATABASE  DBName_1  TO  DISK='C:\Backup_DBFile\DB_1.bak'
BACKUP  DATABASE  DBName_2  TO  DISK='C:\Backup_DBFile\DB_2.bak'
BACKUP  DATABASE  DBName_3  TO  DISK='C:\Backup_DBFile\DB_3.bak'
(以下、省略)

 
MSDE2000 データベースバックアップ:0060]
バックアップをしたいデータベースを今誰かが更新しています。バックアップは中止すべきですか?
MSDE 2000は、オンラインバックアップ機能を提供します。この機能によって、データベースの使用状態に関係なく、データベースのバックアップを実行することができます。
データベースを誰かが使用している最中でも、バックアップ命令を実行することができます。
但しデータベースサーバーの処理能力が低い場合や搭載されたメモリ容量が少ない場合などでは、事前によく調査をして下さい。
場合によっては、誰かがデータベースを使用しているときは、バックアップ命令を控えるようにと、言われるかもしれません。
 

MSDE2000 データベースバックアップ:0070]
データベースサーバーに存在するすべてのデータベースのバックアップを実行する、簡単な方法はありますか?
declare @dbname  sysname
declare @sql     varchar(100)

declare hcur  insensitive cursor for 
    select name from master.dbo.sysdatabases

open  hcur

fetch  next from hcur into @dbname
while @@fetch_status = 0
begin
          if( @dbname <> 'tempdb' )
              begin
                       select @sql = 'backup database ' + @dbname +
                                   '  to disk=''d:\backup_db\' + @dbname + '.bak'' with init' 
                       exec( @sql )
              end
          fetch  next from hcur into @dbname
end
close hcur
deallocate hcur
上記のスクリプトを実行すると、ドライブD:の\backup_dbディレクトリの中に、データベースサーバーに存在するすべてのデータベースの全体バックアップファイルを作成します(tempdbデータベースのバックアップは不要です)

なお、with init オプションによって、既存のバックアップファイルの内容はすべて消去されますので、ご注意ください。

 

MSDE2000 データベースバックアップ:0080]
データベースサーバーを起動したときに(データベースサービスを開始した直後に)、念のため、データベースサーバーに存在するすべてのデータベースのバックアップを必ず実行する、何かよい方法はありますか?
データベースのバックアップ作業は、忘れずに、できれば、自動的に実行することが大事です。データベースサーバーを起動した直後の個々のデータベースのバックアップを取っておくという考えは良いと思います。

Q7のスクリプトを、ストアドプロシージャ化にして、masterデータベースの中に作成します。

use master
go

if exists( select * from sysobjects 
                 where name='auto_backup' and type='p')
begin
        drop proc auto_backup
end
go

create proc auto_backup
as
  declare @dbname  sysname
  declare @sql     varchar(200)

  declare hcur  insensitive cursor for 
      select name from master.dbo.sysdatabases

  open  hcur

  fetch  next from hcur into @dbname
  while @@fetch_status = 0
  begin
    if( @dbname <> 'tempdb' )
        begin
           select @sql = 'backup database ' + @dbname +
                         '  to disk=''d:\backup_db\' + @dbname + '.bak''  with init' 
           exec( @sql )
        end
    fetch  next from hcur into @dbname
  end
  close hcur
  deallocate hcur
go
上記のスクリプトを、saログイン名でログインして、実行します。masterデータベースの中に、auto_backupというストアドプロシージャが登録されます。

次に、このauto_backupストアドプロシージャを、データベースサービスを起動した直後に自動的に実行されるように、次のスクリプトをsaログインでログインして実行します。

use master
go
exec  sp_procoption  'auto_backup' , 'startup' , 'true'
go
このスクリプトを実行することによって、auto_backupストアドプロシージャが、データベースサービスを開始する度に、自動的に実行されます。
自動実行ストアドプロシージャの機能を活用します。

なお、with init オプションによって、既存のバックアップファイルの内容はすべて消去されますので、ご注意ください。

 

MSDE2000 データベースバックアップ:0090]
データベースサーバーから離れたクライアントのパソコンから、データベースサーバー上のデータベースをすべてバックアップを行なう、簡単な方法はありますか?
上記の例で、auto_backupストアドプロシージャをmasterデータベースの中に作成しています。このストアドプロシージャを使いましょう。

ネットワーク接続されたクライアントのパソコンには、VBS(VisualBasic Script)が入っており、MDACがインストールされ、データベースサーバーにADO接続ができるものとします。

次のVBSスクリプトを実行してください。

  '接続オブジェクトの作成
    SET CN = CreateObject("ADODB.Connection")

  '接続先データベースサーバーとログイン名の定義
    Server_Name = "Database Server Name"
    Login_Name  = "sa"
    Pass_Word   = "sa_password"

  'OLE-DBの接続文字列の作成
    CN.ConnectionString = "Provider=SQLOLEDB;" & _
                          "Data Source=" & Server_Name & ";" & _
                          "Initial Catalog=master;" & _
                          "User Id="  & Login_Name & ";" & _
                          "Password=" & Pass_Word & ";"

  'SQLServerに接続を実施
    CN.Open

  'auto_backupストアドプロシージャを実行する
    CN.Execute  "exec master.dbo.auto_backup"

  '接続を閉じる
    CN.Close

  'オブジェクトの破棄
    SET CN = NOTHING
もちろん、クライアントのパソコンにOSQLコマンドがあれば、OSQLコマンドを使うのが簡単です。

osql -S DBServerName -Usa -Psa_password -Q"exec master.dbo.auto_backup"

を実行します。

 

MSDE2000 データベースバックアップ:0100]
MSDE 初心者の私が、もっと簡単に MSDE データベースサーバーのバックアップを取る方法はありますか?
MSDE や SQLServer データベースサーバーの、すべてのデータベースの全体バックアップを実行するプログラムが公開されております。そのプログラムをご活用下さい。

MSDE SQL Server バックアップ ツール

 

 
 
 
MSDE FunClubに関するご意見・ご要望等ございましたら、
msdefun@horikawa.ne.jp までご連絡下さい。
MSDEを始めとする各種データベースシステムの開発、コンサルタントに関するご要望等は、
msdedev@horikawa.ne.jp までご連絡下さい。