' '********************************************** ' ' [MSDE BACKUP Tool] ' ' Version 1.00 ' ' 2005/08/20 ' ' プログラム作成:堀川 明 ' http://www.horikawa.ne.jp/msde/ ' ' 'このVBScriptプログラムは、MSDEデータベースサーバーに '接続を行なって、サーバー上のすべてのデータベースの '全体バックアップを作成します。 ' 'masterデータベース等のシステムデータベースのバック 'アップも実行します。 ' 'データベースのバックアップは、1個のファイルの '中にまとめられます。 '作成されるファイル名は、現在日時で作られます ' '********************************************** ' ' '接続先のデータベースサーバーの名前を定義してください '「サーバー名」または「サーバー名\インスタンス名」の形式です ' ' DBServerName = "DBServerName" ' 'Windows信頼接続で、接続を行なうときは、=1 です 'SQLServerログイン接続では、=0 です 'Windows信頼接続の場合は、データベースサーバーのAdministrator権限でログインして下さい 'Administrator権限該当者は、データベースサーバーのsysadminサーバーロールに該当します 'sysadminサーバーロールの権限が無いと、すべてのデータベースのバックアップの実行ができません ' IsTrustedLogin = 1 ' 'SQLServerログインの場合、saログイン名のパスワードを入力します ' IF IsTrustedLogin = 0 Then SAPassWord = InputBox("SAログインパスワードの入力です" , "SAログインパスワードの入力です") '***MSGBOX SAPassWord END IF ' 'バックアップファイルを保存するフォルダ名を定義して下さい 'データベースサーバーから見たドライブ名で記述します ' DriveName:\FolderName\FolderName... の形式です 'ファイル名は、自動的に付けられます。 '保存先のフォルダ名を定義して下さい ' BackupDir = "D:\BackupSave" ' '**************************************************** ' プログラムの本体の始まりです ' ここから下の部分は、書き換える必要はありません '**************************************************** ' ' 'バックアップファイル名を作成します ' BackupDir\MSDEBackup-20050819-235959.bak の形式です ' FILEBase = Replace(Replace(Replace(FormatDateTime(NOW(),0),"/",""),":","")," ","-") '***MSGBOX FILEBase FileName = BackupDir & "\" & "MSDEBackup-" & FILEBase & ".bak" '****MSGBOX FileName ' 'データベースへの接続オブジェクトを作成する ' IF IsTrustedLogin = 1 THEN ' 'Windows信頼接続用の接続文字列の作成 ' ConSTR = "Provider=SQLOLEDB;" & _ "Data Source=" & DBServerName & ";" & _ "Initial Catalog=master;" & _ "Trusted_Connection=YES;" ELSE ' 'SQLログイン接続用の接続文字列の作成 ' ConSTR = "Provider=SQLOLEDB;" & _ "Data Source=" & DBServerName & ";" & _ "Initial Catalog=master;" & _ "User Id=sa;" & _ "Password=" & SAPassWord & ";" END IF '接続オブジェクトの作成 SET CN = CreateObject("ADODB.Connection") '接続の定義 CN.ConnectionString = ConSTR 'SQLServerに接続を実施 CN.Open 'レコードセットオブジェクトを作成する SET RecDBName = CreateObject("ADODB.Recordset") 'データベースサーバー上に存在するデータベースの個数を求める SQL = "select count(name) AS KOSU from master.dbo.sysdatabases" RecDBName.Open SQL , CN , 0 , 1 'サーバーに存在するデータベースの総数 TotalOfDB = RecDBName.Fields("KOSU").value '上記のレコードセットは用済み。閉じる。 RecDBName.Close 'データベースサーバー上に存在するデータベースの名前を取得します SQL = "select name from master.dbo.sysdatabases" RecDBName.Open SQL , CN , 0 , 1 ' 'データベースの名前を1個1個取り出すループ処理を作成する ' I = 1 DO UNTIL RecDBName.EOF 'データベースサーバーに存在するデータベースの名前 DBName = RecDBName.Fields("name").value '***MSGBOX DBName , ,"データベースの名前" 'tempdbデータベースは、バックアップ対象から除く IF DBName <> "tempdb" THEN ' '全体バックアップを実行するSQL文の作成 ' SQL = "BACKUP DATABASE [" & DBName & "] TO DISK = '" & FileName & "'" '***MSGBOX SQL ' 'バックアップ実行前のメッセージ ' MSGBOX "データベースサーバー名:[" & DBServerName & "]" & vbcrlf & _ " データベース名:[" & DBName & "] のバックアップを実行します" & vbcrlf & _ "大きなデータベースのバックアップでは、しばらく時間が掛かります" & vbcrlf & _ "OKボタンを押して下さい。",, _ "MSDE Backup Tool Ver.1.00 (C)MSDE FunClub [" & CSTR(I) & "/" & CSTR(TotalOfDB) & "](tempdbはバックアップ対象から除きます)" ' 'データベースのバックアップを実行します ' CN.EXECUTE SQL END IF '次のデータベースの名前を取り出す RecDBName.MoveNext I = I + 1 Loop 'レコードセットを閉じる RecDBName.Close SET RecDBName = NOTHING '接続を閉じる CN.Close 'オブジェクトを破棄する SET CN = NOTHING MSGBOX "データベースのバックアップが終わりました" & vbcrlf & _ "バックアップファイル名[" & FileName & "]" , , "バックアップ終了"