(2.15)备份与还原--使用作业备份、清理过期备份、清理历史记录、事务日志是否备份过...
一、建立作業(yè)備份數(shù)據(jù)庫(kù)
打開(kāi)SQL SERVER MANAGEMENT STUDIO,啟動(dòng)SQL SERVER代理服務(wù)(注意在“控制面板-管理工具-服務(wù)”中設(shè)置SQL SERVER AGENT的啟動(dòng)類型為自動(dòng))。啟動(dòng)后點(diǎn)擊“作業(yè)-新建作業(yè)”,彈出一個(gè)作業(yè)屬性的窗口,在“常規(guī)”欄目里可以先給作業(yè)命名,假設(shè)為“備份數(shù)據(jù)”。?一、備份數(shù)據(jù)的第一個(gè)步驟--“備份當(dāng)日數(shù)據(jù)”?
在“步驟”欄目里新建一個(gè)步驟名為“備份當(dāng)日數(shù)據(jù)”,類型為“T-SQL”,數(shù)據(jù)庫(kù)選擇你要操作的數(shù)據(jù)庫(kù)(假設(shè)為“TESTDB”),命令窗口里填入備份的SQL語(yǔ)句。假設(shè)備份數(shù)據(jù)放在“D:\BACKUP”里,備份文件命名格式為“SQL-2009-3-26.BAK”,那么語(yǔ)句如下:
在步驟屬性的高級(jí)的“成功時(shí)要執(zhí)行的操作”選擇“轉(zhuǎn)到下一步”即可,這樣“備份當(dāng)日數(shù)據(jù)”的步驟已經(jīng)建立好。
二、備份數(shù)據(jù)的第二個(gè)步驟--“刪除舊有備份”
我們可以設(shè)置只保留5天內(nèi)的備份數(shù)據(jù),那么必須刪除5天前的數(shù)據(jù)備份文件。在“備份數(shù)據(jù)”作業(yè)屬性窗口的步驟欄目里,建立第二個(gè)步驟命名為“刪除舊有備份”。同樣類型為“T-SQL”,命令窗口里填入一下SQL語(yǔ)句:
此命令會(huì)刪除“D:\BACKUP”里5天前的.BAK或.TRN格式的文件,不用指定文件名是什么。因?yàn)镾QL SERVER的備份文件里包含了時(shí)間屬性在里面。在步驟屬性的高級(jí)的“成功時(shí)要執(zhí)行的操作”選擇“退出報(bào)告成功的作業(yè)”即可,這樣第二個(gè)步驟已經(jīng)建立好。
三、備份數(shù)據(jù)作業(yè)屬性的計(jì)劃?rùn)谀坷?#xff0c;設(shè)置作業(yè)的執(zhí)行時(shí)間
新建一個(gè)作業(yè)計(jì)劃,命名為“每日自動(dòng)備份和刪除”,再選擇執(zhí)行的周期,例如每天凌晨1點(diǎn)開(kāi)始執(zhí)行。
最后保存整個(gè)“備份數(shù)據(jù)”的作業(yè),每日就會(huì)自動(dòng)備份數(shù)據(jù)庫(kù)和刪除舊有數(shù)據(jù)了。
?
四、清理歷史記錄
1. 刪除舊的歷史記錄
每次執(zhí)行備份或還原操作后會(huì)向備份和還原歷史記錄表添加額外的行。因此,如果實(shí)例中的數(shù)據(jù)庫(kù)備份非常頻繁,建議定期執(zhí)行 sp_delete_backuphistory,通過(guò)刪除早于指定日期的備份集條目,減小備份和還原歷史記錄表的大小。
2. 刪除特定數(shù)據(jù)庫(kù)的所有歷史記錄
sp_delete_database_backuphistory 將從備份和還原歷史記錄表中刪除有關(guān)指定數(shù)據(jù)庫(kù)的所有歷史記錄。 USE msdb; GO EXEC sp_delete_database_backuphistory @database_name = 'db01';?五、查看事務(wù)日志文件是否做過(guò)備份
如果發(fā)現(xiàn)數(shù)據(jù)庫(kù)db01的事務(wù)日志文件(LDF文件)變得非常大,那么首先運(yùn)行以下語(yǔ)句,檢查db01數(shù)據(jù)庫(kù)是否做過(guò)事務(wù)日志備份。 select * from msdb.dbo.backupset where database_name='db01' and type='L'?
六.?數(shù)據(jù)庫(kù)備份還原歷史記錄
備份還原的記錄都在msdb里。
1.?備份記錄
SELECT bs.backup_set_id,bs.database_name,bs.backup_start_date,bs.backup_finish_date,CAST(CAST(bs.backup_size/1000000 AS INT) AS VARCHAR(14)) + ' ' + 'MB' AS [Size],CAST(DATEDIFF(second, bs.backup_start_date,bs.backup_finish_date) AS VARCHAR(4)) + ' ' + 'Seconds' [TimeTaken],CASE bs.[type]WHEN 'D' THEN 'Full Backup'WHEN 'I' THEN 'Differential Backup'WHEN 'L' THEN 'TLog Backup'WHEN 'F' THEN 'File or filegroup'WHEN 'G' THEN 'Differential file'WHEN 'P' THEN 'Partial'WHEN 'Q' THEN 'Differential Partial'END AS BackupType,bmf.physical_device_name,CAST(bs.first_lsn AS VARCHAR(50)) AS first_lsn,CAST(bs.last_lsn AS VARCHAR(50)) AS last_lsn,bs.server_name,bs.recovery_modelFROM msdb.dbo.backupset bsINNER JOIN msdb.dbo.backupmediafamily bmf ON bs.media_set_id = bmf.media_set_idORDER BY bs.server_name,bs.database_name,bs.backup_start_date; GO如果server_name是本機(jī),那么備份是在本機(jī)生成的;
如果server_name是別的主機(jī)名,那么備份是被拿到本機(jī)做過(guò)數(shù)據(jù)庫(kù)還原;
?
2.?還原紀(jì)錄
SELECT rs.[restore_history_id],rs.[restore_date],rs.[destination_database_name],bmf.physical_device_name,rs.[user_name],rs.[backup_set_id],CASE rs.[restore_type]WHEN 'D' THEN 'Database'WHEN 'I' THEN 'Differential'WHEN 'L' THEN 'Log'WHEN 'F' THEN 'File'WHEN 'G' THEN 'Filegroup'WHEN 'V' THEN 'Verifyonly'END AS RestoreType,rs.[replace],rs.[recovery],rs.[restart],rs.[stop_at],rs.[device_count],rs.[stop_at_mark_name],rs.[stop_before] FROM [msdb].[dbo].[restorehistory] rs INNER JOIN [msdb].[dbo].[backupset] bs --on rs.backup_set_id = bs.media_set_id ON rs.backup_set_id = bs.backup_set_id INNER JOIN msdb.dbo.backupmediafamily bmf ON bs.media_set_id = bmf.media_set_id GO還原數(shù)據(jù)庫(kù)的時(shí)候是會(huì)寫(xiě)backupset和backupmediafamily系統(tǒng)表的,用來(lái)記錄還原所用到的備份文件信息。
轉(zhuǎn)載于:https://www.cnblogs.com/gered/p/9203950.html
總結(jié)
以上是生活随笔為你收集整理的(2.15)备份与还原--使用作业备份、清理过期备份、清理历史记录、事务日志是否备份过...的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 为什么脑力劳动也会疲倦?科学家:大脑会造
- 下一篇: 逻辑读、物理读