1

我有一个要使用 PowerShell 运行的 SSIS dtsx 包。以下是我在 powershell 中运行的内容。

EXEC xp_cmdshell '"C:\Program Files\Microsoft SQL Server\130\DTS\Binn\DTExec.exe" /f "F:\SqlExport\New package.dtsx"'

不幸的是,我收到以下错误,我不知道为什么

EXEC : 术语“EXEC”未被识别为 cmdlet、函数的名称,
脚本文件或可运行的程序。检查名称的拼写,或者如果路径
已包含,请验证路径是否正确,然后重试。
在行:1 字符:1
+ EXEC xp_cmdshell '"C:\Program Files\Microsoft SQL Server\130\DTS\Binn ...
+ ~~~~
    + CategoryInfo : ObjectNotFound: (EXEC:String) [], CommandNotFoundException
    +fullyQualifiedErrorId:CommandNotFoundException

我也xp_cmdshell使用以下命令在 SQL Server 中启用了

4

1 回答 1

2

EXEC xp_cmdshell是一个T-SQL 语句,用于通过cmd.exe.

我认为目的是让 PowerShell 执行以可执行路径开头的命令,"C:\Program Files\Microsoft SQL Server\130\DTS\Binn\DTExec.exe"通过[1]从您的 T-SQL 脚本启动EXEC xp_cmdshell

相反,您的错误消息暗示 PowerShell 执行了整行,这可以预见地失败了:PowerShell 没有EXEC命令(并且您的系统上没有该名称的外部程序)。

也就是说,如果您的行已由 SQL Server(通过 T-SQL 脚本)执行,则此处不需要 PowerShell,也不会进入图片。EXEC xp_cmdshell

事实上,如果 SQL Server 正确执行,您的 T-SQL 命令应该按原样工作(使用参数调用外部程序,通过)。cmd.exe


[1]更新:如果意图只是从 PowerShell启动命令

& "C:\Program Files\Microsoft SQL Server\130\DTS\Binn\DTExec.exe" /f "F:\SqlExport\New package.dtsx"`

请注意&,调用运算符需要告诉 PowerShell 后面的双引号字符串是要调用的可执行文件的名称。

于 2018-11-19T15:28:22.883 回答