新增一個資料庫, 第一件事要做的就是備份一次資料庫檔案.
偶而朋友發生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 來備份所有的使用者資料庫