日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

(2.15)备份与还原--使用作业备份、清理过期备份、清理历史记录、事务日志是否备份过...

發布時間:2023/12/13 编程问答 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 (2.15)备份与还原--使用作业备份、清理过期备份、清理历史记录、事务日志是否备份过... 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一、建立作業備份數據庫

  打開SQL SERVER MANAGEMENT STUDIO,啟動SQL SERVER代理服務(注意在“控制面板-管理工具-服務”中設置SQL SERVER AGENT的啟動類型為自動)。啟動后點擊“作業-新建作業”,彈出一個作業屬性的窗口,在“常規”欄目里可以先給作業命名,假設為“備份數據”。?一、備份數據的第一個步驟--“備份當日數據”?
  在“步驟”欄目里新建一個步驟名為“備份當日數據”,類型為“T-SQL”,數據庫選擇你要操作的數據庫(假設為“TESTDB”),命令窗口里填入備份的SQL語句。假設備份數據放在“D:\BACKUP”里,備份文件命名格式為“SQL-2009-3-26.BAK”,那么語句如下:

DECLARE @filename VARCHAR(255) DECLARE @date DATETIME SELECT @date=GETDATE() SELECT @filename = 'D:\BACKUP\SQL-'+CAST(DATEPART(yyyy,@date) as varchar)+'-'+CAST(DATEPART(mm,@date) as varchar)+'-'+CAST(DATEPART(dd,@date) as varchar)+'.bak' BACKUP DATABASE [TESTDB] TO DISK = @filename WITH INIT GO

在步驟屬性的高級的“成功時要執行的操作”選擇“轉到下一步”即可,這樣“備份當日數據”的步驟已經建立好。
二、備份數據的第二個步驟--“刪除舊有備份”
  我們可以設置只保留5天內的備份數據,那么必須刪除5天前的數據備份文件。在“備份數據”作業屬性窗口的步驟欄目里,建立第二個步驟命名為“刪除舊有備份”。同樣類型為“T-SQL”,命令窗口里填入一下SQL語句:

DECLARE @OLDDATE DATETIME SELECT @OLDDATE=GETDATE()-5 EXECUTE master.dbo.xp_delete_file 0,N'D:\BACKUP',N'bak',@olddate,1

此命令會刪除“D:\BACKUP”里5天前的.BAK或.TRN格式的文件,不用指定文件名是什么。因為SQL SERVER的備份文件里包含了時間屬性在里面。在步驟屬性的高級的“成功時要執行的操作”選擇“退出報告成功的作業”即可,這樣第二個步驟已經建立好。

三、備份數據作業屬性的計劃欄目里,設置作業的執行時間
新建一個作業計劃,命名為“每日自動備份和刪除”,再選擇執行的周期,例如每天凌晨1點開始執行。
最后保存整個“備份數據”的作業,每日就會自動備份數據庫和刪除舊有數據了。

?

四、清理歷史記錄

1. 刪除舊的歷史記錄
  每次執行備份或還原操作后會向備份和還原歷史記錄表添加額外的行。因此,如果實例中的數據庫備份非常頻繁,建議定期執行 sp_delete_backuphistory,通過刪除早于指定日期的備份集條目,減小備份和還原歷史記錄表的大小。

USE msdb; GO EXEC sp_delete_backuphistory @oldest_date = '2013-06-30';

2. 刪除特定數據庫的所有歷史記錄

sp_delete_database_backuphistory 將從備份和還原歷史記錄表中刪除有關指定數據庫的所有歷史記錄。 USE msdb; GO EXEC sp_delete_database_backuphistory @database_name = 'db01';

?五、查看事務日志文件是否做過備份

如果發現數據庫db01的事務日志文件(LDF文件)變得非常大,那么首先運行以下語句,檢查db01數據庫是否做過事務日志備份。 select * from msdb.dbo.backupset where database_name='db01' and type='L'

?

.?數據庫備份還原歷史記錄

備份還原的記錄都在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是本機,那么備份是在本機生成的;

如果server_name是別的主機名,那么備份是被拿到本機做過數據庫還原;

?

2.?還原紀錄

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

還原數據庫的時候是會寫backupset和backupmediafamily系統表的,用來記錄還原所用到的備份文件信息。

轉載于:https://www.cnblogs.com/gered/p/9203950.html

總結

以上是生活随笔為你收集整理的(2.15)备份与还原--使用作业备份、清理过期备份、清理历史记录、事务日志是否备份过...的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。