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