【问题标题】:Unable to connect to remote shared path through xp_cmdshell无法通过 xp_cmdshell 连接到远程共享路径
【发布时间】:2017-08-02 08:16:34
【问题描述】:

我正在尝试使用 SQL 管理工作室中的 xp_cmdshell 将文件从远程路径复制到本地计算机。

以下是我使用的步骤:

1.建立连接

exec xp_cmdshell 'net use L: \\remoteServer\folder /user:domain\username ImPWD'

2。重新连接

当我执行exec xp_cmdshell 'net use' 时,L 的状态是不可用的。 所以我跑了exec xp_cmdshell 'net use L:' 无论如何,这无济于事。它仍然不可用!

3.复制文件

EXEC xp_cmdshell 'COPY L:\Fol1\SubFol2\File.xlsx C:\work\file.xlsx'

这是我得到的错误:

系统找不到指定的文件。

我尝试了以下方法,但似乎没有任何效果:

  • 找到 xp_cmdshell 使用的用户凭据并尝试通过 Windows UI 手动连接到共享路径,它似乎可以工作。因此我得出的结论是没有权限问题。EXEC xp_cmdshell 'whoami.exe'

  • 以普通用户和管理员身份运行查询。两者都产生相同的输出。

这是我的问题:

  1. 我错过了一些步骤吗?
  2. 为什么第一次连接后连接不可用?
  3. 如何删除连接?即当我运行exec xp_cmdshell 'net use * /delete' 时,它会询问

您要继续此操作吗? (是/否) [否]: 我不确定如何使用管理工作室查询说“Y”。

提前感谢您的帮助! :)

【问题讨论】:

  • 第三个问题:exec xp_cmdshell 'net use * /delete /y' 它会默默选择是
  • @lad2025 谢谢!效果很好!当我再次删除并添加连接时,连接状态变为“正常”,之前是“不可用”。现在剩下的唯一问题是,它仍然没有复制。得到同样的错误。
  • 经过两天的疯狂调试,我猜我找到了答案!哈哈!这只是文件夹名称问题。带空格的文件夹名!!!如果我将路径用双引号括起来,它就像一个魅力!
  • 很高兴听到它有效 :)

标签: sql sql-server xp-cmdshell net-use


【解决方案1】:

如何删除连接?

删除连接使用:

exec xp_cmdshell 'net use * /delete /y'

(yes) 将被静默传递

至于其他问题:您在评论中提到路径中的文件夹有空格,因此您可以:

  • 重命名文件夹
  • ""包裹

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-10-17
    • 2018-05-20
    • 2017-12-23
    • 1970-01-01
    • 1970-01-01
    • 2013-09-16
    • 2019-11-13
    • 2015-03-19
    相关资源
    最近更新 更多