刪除過舊的資料庫備份檔案

當資料庫備份太多又太舊的話, 在維護作業又沒有設定好, 會把備份的資料庫檔案變成吃磁蹀空間的怪物。

若要即時把資料庫裡的所有備份檔案都刪掉的話 (可指定時間), 使用下列方式即可

–這個範例可以備份所有的使用者資料庫,中文的資料庫名稱也可以支援!
– 請修改 @DirectoryPath 參數, 指定備份的目的地

declare @DatabaseName nvarchar(300)     — 存放資料庫名稱
,@DirectoryPath nvarchar(2000)  — 存放備份檔放置的資料夾的路徑
,@SQL_CMD nvarchar(2000)                 — 存放 T-SQL 指令
,@PATH NVARCHAR(225)
,@DATE_DEL INT

– 指定備份檔放置的資料夾的路徑
set @DirectoryPath = ‘D:\Backup\’

–指定刪除幾天之前的備份檔案

SET @DATE_DEL = -14

print CONVERT(VARCHAR(50),DATEADD(DAY,@DATE_DEL,GETDATE()),112)

– get user database only

declare Database_Cursor cursor for

select d.name

from sys.databases d

where d.name not in(‘master’, ‘tempdb’, ‘model’, ‘msdb’)

open Database_Cursor

fetch next from Database_Cursor

into @DatabaseName

while @@fetch_status = 0

begin

SET @SQL_CMD = ‘master.dbo.xp_delete_file 0,N"‘ + @DirectoryPath + @DatabaseName + “‘,N"*",N"‘
+ CONVERT(VARCHAR(50),DATEADD(DAY,@DATE_DEL,GETDATE()),112)
+ “"
print @SQL_CMD
exec (@SQL_CMD)

fetch next from Database_Cursor
into @DatabaseName

end

– 釋放資源

close Database_Cursor

deallocate Database_Cursor

執行了之後, 就會把所指定的資料庫刪除

Comments are closed.

十一月 2019
« 五月    
 123
45678910
11121314151617
18192021222324
252627282930  

Google ADs