我必须使一个流程自动化,以摆脱组织中日常工作量的减少。我们需要在不同的SQL Server实例上执行多个脚本,并且每个脚本还包含数据库名称。
因此,最初我们的客户将所有脚本放置在特定位置,我需要执行每个脚本,然后将脚本文件移动到其他文件夹。
脚本出错后,它记录了该错误并生成了一个文件。
成功执行后,我需要生成一个日志文件,在该日志文件中,还应生成所有成功结果脚本。就像我们在SSMS中执行一个脚本时一样,执行脚本后,它会生成一条消息,例如“ 1行受影响”。
我该怎么做?
invoke-sqlcmd -inputfile "E:\test.sql" -serverinstance ".\Your_Instance_Name" -database "user" | out-File -filepath "E:\result.txt"
答案 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
。