分類
Database

SQL Server自動備份通用方式(script)

新增一個資料庫, 第一件事要做的就是備份一次資料庫檔案.

偶而朋友發生SQL Server資料庫檔案故障的問題, 第一件事我會問有沒有做過備份, 其實也算是做最壞的打算, 利用 transaction log 配合之前的 database backup 應該可以 restore 大部分的資料, 但有可能連一次備份都沒做過的狀況下, 很有可能會發生資料庫整個救不回來的狀況. 所以安裝完資料庫後, 第一件事一定是要做好備份的規劃及策略.

這裡提供的方式, 是最懶人的方式, 就是利用 script 進行該資料庫的所有使用者資料庫備份, 利用查詢出 sysdatabases 中的非系統資料庫 (dbid > 4) 的備份, 指令如下:

declare @datestr nvarchar(255), @dbname nvarchar(255), @path nvarchar(255), @cmd_backup_log nvarchar(255), @cmd_backup_data nvarchar(255)
select @datestr = convert(nvarchar, getdate(), 112)
select @path = 'c:\sqlbackup\' declare db_cur cursor for
select name from master..sysdatabases where dbid > 4 

open db_cur
fetch next from db_cur into @dbname
WHILE @@FETCH_STATUS = 0
BEGIN
 select @cmd_backup_log = 'backup log '+@dbname+' to disk='''+@path + @dbname + @datestr + '_log.bak'''
 select @cmd_backup_data = 'backup database '+@dbname+' to disk='''+@path + @dbname + @datestr + '_data.bak'''
 --print @cmd_backup_log
 --print @cmd_backup_data
 exec sp_executesql @cmd_backup_log
 exec sp_executesql @cmd_backup_data
 
fetch next from db_cur into @dbname
END
close db_cur
deallocate db_cur

將每日備份利用日期組合出檔名, 就不會有重覆的問題, 若資料庫過大, 可以再調整為每日備 differential backup + transaction backup, 每週一次做 full backup, 這樣應該就很方便了!

這個同時適用於 SQL 2000 及 SQL 2005 資料庫.

[2007/8/19 0:47]
一篇類似的文章, 供大家參考:
如何使用 T-SQL 來備份所有的使用者資料庫

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *