【问题标题】:Unable to delete zip files from DB server location using xp_cmdshell无法使用 xp_cmdshell 从数据库服务器位置删除 zip 文件
【发布时间】:2013-11-11 07:16:20
【问题描述】:

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

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

当我实际上可以看到文件时,它会给出一个错误提示文件未找到。

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

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

如果有什么建议,请提出,

谢谢。

【问题讨论】:

  • “我什么时候可以看到文件” - 在哪里你可以看到它?服务器不一定具有与您相同的驱动器映射;它可能对`F:`一无所知。
  • @KenWhite :我只能在服务器位置看到文件。我能够删除位于同一位置的其他类型的其他文件。

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


【解决方案1】:

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

我怀疑是权限问题,所以请确保 SQL Server 进程有权删除该位置的文件。另一种建议是在该位置执行“dir”。

【讨论】:

  • 感谢“目录”的想法。 Zip 文件名不同。所以没有删除。
【解决方案2】:

尝试在静默模式下执行del,例如:

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

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

【讨论】:

  • 嗨,我收到以下关于使用您建议的答案的消息。 Could Not Find F:\EXIS\Reports\Individual.zip
【解决方案3】:

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

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

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

重新配置

-- 启用该功能。

EXEC sp_configure 'xp_cmdshell', 1 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 包含空格,您必须输入您的路径,例如“您的 路径”

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多