通過CLR儲存過程刪除過期的資料庫Bak備份檔案

2021-09-05 22:01:44 字數 2029 閱讀 5033

在乙個備份檔案目錄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...