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 來備份所有的使用者資料庫

發佈留言

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