繁体   English   中英

Invoke-Sqlcmd在SQL中不起作用

[英]Invoke-Sqlcmd not working in SQL

我在SQL Powershell中使用以下命令来生成由SQL返回的数据的csv。

Invoke-Sqlcmd -Query "myp" -ServerInstance "." | Export-Csv -Path "d:\data\MyDatabaseSizes.csv" -NoTypeInformation

上面的命令在SQL Power Shell中可以正常工作。 但是当我尝试使用以下代码从SQL运行时

DECLARE @cmd varchar(1000)
SET @cmd = 'Invoke-Sqlcmd -Query "myp" -ServerInstance "." | Export-Csv -Path "d:\data\MyDatabaseSizes.csv" -NoTypeInformation'
EXEC xp_cmdshell @cmd

它给出了错误

无法将“ Invoke-Sqlcmd”识别为内部或外部命令,

任何人都可以帮助我从SQL运行命令。

谢谢

xp_cmdmshell执行Windows Shell命令,而不执行PowerShell命令。 您当然可以在Windows Shell中调用PowerShell,例如:

DECLARE @cmd varchar(1000)
SET @cmd = 'Invoke-Sqlcmd -Query ''myp'' -ServerInstance ''.'' ^| Export-Csv -Path ''d:\data\MyDatabaseSizes.csv'' -NoTypeInformation'
EXEC xp_cmdshell 'powershell.exe -c "' + @cmd + '"'

注意:

  • 我已将PowerShell命令中的双引号替换为单引号(对SQL进行了转义),因此可以在Windows命令中使用双引号。 如果您需要在PowerShell中使用双引号,最好不要在文件中使用PowerShell脚本,以避免所有这些情况
  • 您可能还需要更多参数(例如,设置执行策略)。 这个MSDN页面在PowerShell命令行开关有更多帮助
  • 命令行参数中的管道字符需要使用^进行转义

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM