SQL中的xp_cmdshell拒絕訪問


數據庫備份作業的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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM