我有这个sqlcmd代码段可以批量工作,但是当我转换为powershell时,它坏了。这就是我试图使用Powershell调用的

Sqlcmd -S localhost\instance -d database -U username -P password -i "sqlQuery.sql" -s "," > \sqlOutput.csv -I -W -k

我尝试了invoke-sqlcmd,但出现错误“术语'invoke-sqlcmd'未被识别为cmdlet,函数,脚本文件或可运行程序的名称”

关于下面的评论,我已经加载了所需的管理单元。这确实有所帮助,但我现在遇到此错误。 “Invoke-sqlcmd:由于参数名称's'不明确,无法处理参数。

如果我用单引号...
invoke-Sqlcmd '-S localhost\instance -d database -U username -P password -i "sqlQuery.sql" -s "," > \sqlOutput.csv -I -W -k'

我收到错误消息“与sql server建立连接时发生了与网络相关或特定于实例的错误。这对我来说没有意义,因为从批处理中调用时,我在同一盒中使用的相同凭据无法正常工作。

最佳答案

您必须首先从powershell或命令提示符中调用sqlps.exe(假设您已安装Powershell的SQL Server管理单元)。

完成此操作后,执行get-help Invoke-Sqlcmd即可找到解决方法。

对您的问题,它不是-S,而是-ServerInstance

 PS SQLSERVER:\> Invoke-Sqlcmd -ServerInstance "srvrName" -Database "master" -Username "user123" -Password "x$34fth"
-InputFile "C:\Users\testUser\Desktop\test.sql" | Out-File "C:\Users\testUser\Desktop\out.txt"

您也可以使用MSDN文档

关于sql - 无法从Powershell正确调用sqlcmd,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10046809/

10-12 19:06