2011年3月21日 星期一

在SQL內用參數傳入執行(以備份資料庫為範例)

--將自動備份寫成PROCEDURE
CREATE  PROCEDURE DBDACKUP AS
DECLARE  @BACKDATE VARCHAR(8)
DECLARE @ACOMMAND VARCHAR(200)
--備份日期
SET  @BACKDATE  =  CONVERT(VARCHAR(8),  GETDATE(),  112)
--備份指令
SET @ACOMMAND =
'BACKUP DATABASE [QRSP_HM] TO  DISK = N''D:\databak\QRSP_HM_backup_'+@BACKDATE+'.bak'''
+'WITH NOFORMAT, NOINIT,  NAME = N''QRSP_HM_backup_'+@BACKDATE+'.bak'''+', SKIP, REWIND, NOUNLOAD,  STATS = 10'
--執行備份指令
--因指令內有包含變數(@BACKDATE),所以需用EXEC方式執行
EXEC(@ACOMMAND)

--刪除備份檔(保留21天)
SET  @BACKDATE  =  CONVERT(VARCHAR(8),  GETDATE()-21,  112)
SET @ACOMMAND = 'MASTER.dbo.xp_delete_file 0,N''D:\databak'',N''BAK'',N'''+@BACKDATE+''''
EXEC(@ACOMMAND)

沒有留言: