MASTER.DBO.XP_CMDSHELL

來源:互聯網
上載者:User

Create  PROCEDURE [dbo].[USP_Data_BACKUP]( @DATABASE AS VARCHAR(100) ) AS 
BEGIN 
 DECLARE @BK_MAX_COUNT   AS INT,  
  @SQLString   AS NVARCHAR(500), 
  @FNAME    AS VARCHAR(100), 
  @PATH_PREFIX   AS VARCHAR(100), 
  @VARIABLE_FNAME  AS VARCHAR(100), 
  @DEL_VARIABLE_FNAME1 AS VARCHAR(100), 
  @DEL_VARIABLE_FNAME2 AS VARCHAR(100), 
  -- @DATABASE  AS VARCHAR(100), 
  @DEVICENAME   AS VARCHAR(100), 
  @LOG_DEVICENAME  AS VARCHAR(100), 
  @SHELLSTRING  AS VARCHAR(100) 
  
 SET @BK_MAX_COUNT  = 12  
 SET @DEVICENAME  = 'DBK_' + @DATABASE 
 SET @LOG_DEVICENAME  = 'LBK_' + @DATABASE 
 SET @PATH_PREFIX  = 'd:/data_managerdb_backup/' 
 SET @VARIABLE_FNAME  = CONVERT(CHAR(8), GETDATE(), 112)  
     + CONVERT(VARCHAR(2), DATEPART(HOUR, GETDATE()))  
     + CONVERT(VARCHAR(2), DATEPART(MINUTE, GETDATE()))  
  
 SET @DEL_VARIABLE_FNAME1 = CONVERT(CHAR(8), GETDATE() - 7, 112) 
 SET @DEL_VARIABLE_FNAME2 = CONVERT(CHAR(8), GETDATE() - 7, 112) 
  
  
 ---------------------------------------------------------- 

--建立d:/data_managerdb_backup/Trans
 SET @SHELLSTRING = 'MKDIR ' + @PATH_PREFIX + 'Trans' 
 EXEC MASTER.DBO.XP_CMDSHELL @SHELLSTRING 
  

--建立d:/data_managerdb_backup/Keeping
 SET @SHELLSTRING = 'MKDIR ' + @PATH_PREFIX + 'Keeping' 
 EXEC MASTER.DBO.XP_CMDSHELL @SHELLSTRING  

--移動d:/data_managerdb_backup/Trans檔案夾下DBK_開頭的備份檔案到d:/data_managerdb_backup/Keeping
 SET @SHELLSTRING = 'MOVE /Y ' + @PATH_PREFIX + 'Trans/' +  @DEVICENAME + '_*.* ' +  @PATH_PREFIX + 'Keeping' 
 EXEC MASTER.DBO.XP_CMDSHELL @SHELLSTRING 
 

--移動d:/data_managerdb_backup/Trans檔案夾下LBK_開頭的備份檔案到d:/data_managerdb_backup/Keeping
 SET @SHELLSTRING = 'MOVE /Y ' + @PATH_PREFIX + 'Trans/' +  @LOG_DEVICENAME + '_*.* ' +  @PATH_PREFIX + 'Keeping' 
 EXEC MASTER.DBO.XP_CMDSHELL @SHELLSTRING 
 ----------------------------------------------------------------------------------------------- 
  
 ---------------------------------------------------------------------- 

--刪除d:/data_managerdb_backup/Keeping檔案夾中一周前的DBK_開頭的備份檔案
 SET @SHELLSTRING = 'DEL ' + @PATH_PREFIX + 'Keeping/' + @DEVICENAME + '_' + @DEL_VARIABLE_FNAME1 + '*.BAK' 
 EXEC MASTER.DBO.XP_CMDSHELL @SHELLSTRING 
  

--刪除d:/data_managerdb_backup/Keeping檔案夾中一周前的LBK_開頭的備份檔案
 SET @SHELLSTRING = 'DEL ' + @PATH_PREFIX + 'Keeping/' + @LOG_DEVICENAME + '_' + @DEL_VARIABLE_FNAME2 + '*.BAK' 
 EXEC MASTER.DBO.XP_CMDSHELL @SHELLSTRING 
 ----------------------------------------------------------------------------------------------- 
  
 ----------------------------------------------------------------------------------- 
 SET @SQLString = N'SELECT * FROM SYSDEVICES WHERE NAME = ''' + @LOG_DEVICENAME + '''' 
 EXEC SP_EXECUTESQL @SQLString 
  
 IF( @@ROWCOUNT > 0 ) 
 BEGIN 
  -- 存在則刪除該磁碟備份檔案
  EXEC SP_DROPDEVICE @logicalname = @LOG_DEVICENAME 
 END 
  
 -- 
 SET @FNAME = @PATH_PREFIX + 'Trans/' + @LOG_DEVICENAME + '_' + @VARIABLE_FNAME + '.BAK' 
--增加新的磁碟備份檔案 

EXEC SP_ADDUMPDEVICE 'DISK', @LOG_DEVICENAME, @FNAME 
  
 SET @SQLString = N'BACKUP LOG ' + @DATABASE + ' TO ' + @LOG_DEVICENAME + ' WITH NOINIT' 

--備份LOG檔案
 EXEC SP_EXECUTESQL @SQLString 
 ------------------------------------------------------------------------------------------------ 
 
 -- -------------------------------------------------------------------------------- 
 SET @SQLString = N'SELECT * FROM SYSDEVICES WHERE NAME = ''' + @DEVICENAME + '''' 
 EXEC SP_EXECUTESQL @SQLString 
  
 IF( @@ROWCOUNT > 0 ) 
 BEGIN 
  --   
  EXEC SP_DROPDEVICE @logicalname = @DEVICENAME 
 END 
  
 SET @FNAME = @PATH_PREFIX + 'Trans/' + @DEVICENAME + '_' + @VARIABLE_FNAME + '.BAK' 
 EXEC SP_ADDUMPDEVICE 'DISK', @DEVICENAME, @FNAME 
  
 SET @SQLString = N'BACKUP DATABASE ' + @DATABASE + ' TO ' + @DEVICENAME + ' WITH NOINIT' 

--備份資料檔案
 EXEC SP_EXECUTESQL @SQLString 
 ------------------------------------------------------------------------------------------------ 
 
END 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.