數據庫備份作業的sql,,最后一步刪除指定時間之前的文件夾..
使用 xp_cmdshell 函數調用 RMDIR 命令刪除過期文件夾,但返回拒絕訪問..
代碼如下:
DECLARE @PATH2 VARCHAR(255) --路徑 DECLARE @DATE2 VARCHAR(255) --日期 例如: 20171011 SET @DATE2=REPLACE(CONVERT(NVARCHAR(10),DATEADD(WEEK,-1,GETDATE()),120),'-','') SET @PATH2 = 'D:\數據庫\BackUP\'+@DATE2+'\' DECLARE @TEMP2 TABLE(A INT,B INT,C INT) --建立一個虛擬表 用來判斷文件夾是否存在 INSERT @TEMP2 EXEC [MASTER]..XP_FILEEXIST @PATH2 IF EXISTS(SELECT * FROM @TEMP2 WHERE B=1) BEGIN --因為XP_CMDSHELL 函數的參數不允許使用變量拼接 所以使用EXEC(SQL)的方法 DECLARE @EX2 NVARCHAR(255) SET @EX2='EXEC XP_CMDSHELL ''RMDIR /S /Q '+@PATH2+'''' EXEC(@EX2) END
解決方法:
增加文件夾的訪問權限為完全控制就可以了,可以修改User權限..不必增加EveryOne