在乙個備份檔案目錄databasebak下,有各個資料庫的完全、差異、事務備份檔案,結構式:
------databasebak
┖---例項名
┖---資料庫名
┖---備份日期(包含完全、差異、事務備份檔案)
現在想實現刪除某一日期之前過期不用的備份檔案。
usetest
go--
設定clr選項,指定ms sql server可以執行使用者程式集
exec
sp_configure n
'clr enabled',
1goreconfigure
go/*
使用模擬上下文的資料庫模組(例如,使用者定義函式或儲存過程)可以訪問資料庫以外的資源。
開啟這一選項是因為,在這例項中需要訪問system.io類庫。
*/alter
database
test
settrustworthy
ongo
--建立託管應用程式模組
ifobject_id('
sp_deletefiles')
isnot
null
drop
proc
sp_deletefiles
goif
exists
(select
1from
sys.assemblies
where
name=n
'clrdeletefiles')
drop
assembly clrdeletefiles
gocreate
assembly clrdeletefiles
fromn'
f:\study\objects\classlibrary1\classlibrary1\bin\debug\clrdeletefiles.dll
'with
permission_set
=external_access
go--
建立clr儲存過程
create
proc
sp_deletefiles
(@filepath
nvarchar
(128
),@lastwritetimestart
datetime
,@lastwritetimeend
datetime)as
external name clrdeletefiles.clrdeletefiles.delfiles
go--
執行exec
sp_deletefiles
'f:\test',
'19000101',
'20091201'
clrdeletefiles.dll c#**:
using
system;
using
system.data;
using
microsoft.sqlserver.server;
using
system.io;
public
class
clrdeletefiles
try//
這裡只查尋字尾名為"*.bak"的資料庫備份檔案
表明檢索所有的子目錄
foreach
(fileinfo myfile
infiledir.getfiles(
"*.bak
",searchoption.alldirectories))
sendmsg(
"已刪除檔案: "+
myfile.fullname);
myfile.delete();}}
}catch
(exception e)}//
資訊提示過程
private
static
void
sendmsg(
string
msg)}
通過CLR儲存過程刪除過期的資料庫Bak備份檔案
在乙個備份檔案目錄databasebak下,有各個資料庫的完全 差異 事務備份檔案,結構式 databasebak 例項名 資料庫名 備份日期 包含完全 差異 事務備份檔案 現在想實現刪除某一日期之前過期不用的備份檔案。usetest go 設定clr選項,指定ms sql server可以執行使用...
通過SQL儲存過程刪除過期的資料庫Bak備份檔案
1.先啟用 xp cmdshell 擴充套件儲存過程 usemaster goexec sp configure show advanced options 1goreconfigure go sp configure xp cmdshell 1goreconfigure go 注 因為xp cmd...
通過SQL儲存過程刪除過期的資料庫Bak備份檔案
1.先啟用 xp cmdshell 擴充套件儲存過程 usemaster goexec sp configure show advanced options 1goreconfigure go sp configure xp cmdshell 1goreconfigure go 注 因為xp cmd...