Invoke-Sqlcmd运行SQL脚本捕获详细输出

时间:2018-12-18 13:29:49

标签: sql-server powershell

我需要每天对各种服务器进行健康检查。我有一个SQL脚本,它在一个脚本中包含丢失的索引,重复的索引,CPU和内存,恢复,失败的作业,最后的备份等。

我正在服务器上手动运行此脚本并将结果更改为文本(我制作了使用print语句的脚本,因此我可以直接复制并粘贴结果)。

现在,我想使用PowerShell运行此脚本,但是我无法获得row-column格式的文本格式的结果。

代码:

$RESULT = (Invoke-Sqlcmd -InputFile $sqlscript -ServerInstance $server -Database $databse -Verbose 4>&1) |
          Out-File $outfile

我得到所有打印语句,但没有得到文本文件中的结果。

1 个答案:

答案 0 :(得分:0)

更合适的方法如下。

[string]$SqlsSript = '..\path\'
[string]$ConnectionString = '...'

$DataSet = Invoke-SqlCmd -ConnectionString $Connectionstring -InputFile $SqlScript -As DataSet

然后您可以浏览$ DataSet集合,即

$DataSet.Tables[0].Rows

然后,您可以根据需要将其转换/输出为文件。

请确保您的SqlScript返回一个表,例如表变量。