通过Powershell成功执行SQL脚本后没有输出

时间:2019-05-06 04:12:48

标签: sql-server powershell

我必须使一个流程自动化,以摆脱组织中日常工作量的减少。我们需要在不同的SQL Server实例上执行多个脚本,并且每个脚本还包含数据库名称。

因此,最初我们的客户将所有脚本放置在特定位置,我需要执行每个脚本,然后将脚本文件移动到其他文件夹。

脚本出错后,它记录了该错误并生成了一个文件。

成功执行后,我需要生成一个日志文件,在该日志文件中,还应生成所有成功结果脚本。就像我们在SSMS中执行一个脚本时一样,执行脚本后,它会生成一条消息,例如“ 1行受影响”。

我该怎么做?

invoke-sqlcmd -inputfile "E:\test.sql" -serverinstance ".\Your_Instance_Name" -database "user" | out-File -filepath "E:\result.txt"

1 个答案:

答案 0 :(得分:0)

除非指定set nocount,否则将自动生成“受影响的1行”消息。

客户端应用程序(例如Invoke-SqlCmd,SSMS和sqlcmd)可以对行数进行任何处理。默认情况下,SSMS和sqlcmd打印它,Invoke-SqlCmd似乎不这样做。这不是一个错误,尽管确实有点令人惊讶。

简单的方法是为@@ROWCOUNT发出明确的选择。像这样

insert mydb.schema.table(column1, column2....) values(...); select @@rowcount;

或者,改用sqlcmd.exe