无法使用xp_cmdshell从数据库服务器位置删除zip文件

时间:2013-11-11 07:16:20

标签: sql sql-server sql-server-2005 xp-cmdshell

我创建了一个Zip文件,但我无法使用以下命令将其删除。

xp_cmdshell 'rm "F:\EXIS\Reports\Individual.zip"'

当我能够真正看到该文件时,它会显示错误,说找不到文件。

我尝试使用xp_cmdshell 'del "F:\EXIS\Reports\Individual.zip"'

但是,这要求确认,我实际上无法输入。

请提出建议,

感谢。

3 个答案:

答案 0 :(得分:1)

尝试以静默模式执行del,如:

xp_cmdshell 'del /Q "F:\EXIS\Reports\Individual.zip"'

另外:如果SQL Server在另一台机器上运行,那么路径当然必须对该机器有效。

答案 1 :(得分:1)

在访问指定位置时,使用SQL Server进程的当前凭据找不到文件时,该消息更通用。

我怀疑这是权利问题,因此请确保SQL Server proecess有权删除该位置的文件。另一种建议是在该位置执行“目录”。

答案 2 :(得分:1)

- 更改服务器配置,例如: - 启用XP_CMDSHELL的脚本 - 允许更改高级选项。

EXEC sp_configure'显示高级选项',1 GO

- 更新高级选项的当前配置值。

RECONFIGURE GO

- 启用此功能。

EXEC sp_configure' xp_cmdshell',1 GO

- 更新此功能的当前配置值。

RECONFIGURE GO;

  DECLARE  @BackUpPath varchar(255) ,@sqlQuery varchar(255)

  Set @BackUpPath='D:\All DB BackUp\TestDB.bak'

  IF dbo.fn_FileExists(@BackUpPath)=1 
  BEGIN

     SET @sqlQuery='DEL /Q "' + @BackUpPath + '"';

     PRINT @sqlQuery

     EXEC master..xp_cmdshell @sqlQuery

     IF dbo.fn_FileExists(@BackUpPath)=0

     BEGIN    

     PRINT 'File Deleted'

     END

     ELSE

     BEGIN    

     PRINT 'File not Deleted'

     END 

   END

如果@BackUpPath包含空格,您必须输入类似"您的路径    路径"