【问题标题】:xp_cmdshell throwing 'null' but working in command promptxp_cmdshell 抛出“null”但在命令提示符下工作
【发布时间】:2020-03-12 02:36:17
【问题描述】:

我正在使用xp_cmdshell 命令将 csv 文件处理到文件夹中。我的查询如下:

Exec master..xp_cmdshell 'C:\test\mydotnetapp.exe -s:03/09/2020 -t:1 -l:1,2,3,4,7 -d C:\test'

在 SSMS 中,此命令返回 null。但是当我这样做时在命令提示符下:

cd C:\test
mydotnetapp.exe -s:03/09/2020 -t:1 -l:1,2,3,4,7 -d C:\test

相同的查询运行良好。有几点:

  1. xp_cmdshell 已启用
  2. SQL Server 有权访问该文件夹
  3. 只有这个xp_cmdshell 命令不起作用。我的另一个 xp_cmdshell 工作正常

关于如何解决此问题的任何帮助?

【问题讨论】:

  • “我的另一个 xp_cmdshell 工作正常”对其他人毫无意义。它使用那个应用程序吗?请注意,在您的“工作版本”中,您在启动应用程序之前更改了当前目录。 “扔空”是什么意思?您的应用程序是否捕获并记录错误?如果不是 - 它应该是因为当以非交互方式运行时您将如何调试代码?

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


【解决方案1】:

如果这是作为定期计划的 SQL 作业的一部分运行的,请将其作为 SQL Server 之外的任务运行。

鉴于安全问题,许多生产 DBA 不会让任何进程运行 XP_CMDSHELL。

如果 CSV 格式正确,则可以将其作为表映射到 SQL Server(不推荐)。

可以直接导入SQL Server。

最后,许多生产 DBA 不会在生产 SQL Server 机器上安装任何自定义流程代码。 SQL Server 机器专用于仅运行 SQL Server 以及安全和监控所需的最低限度的额外功能。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-17
    • 2018-07-10
    • 2016-05-19
    • 2013-05-28
    相关资源
    最近更新 更多