如何将SQL Restore的输出拆分为电子邮件格式

时间:2019-01-23 18:44:52

标签: sql-server powershell

我正在自动化流程,该流程将使用PowerShell脚本和TSQL电子邮件发送邮件为开发人员处理刷新 我唯一想将还原的输出放在电子邮件正文中。 当我使用*>&1通过restore命令运行Invoke-SQlcmd时,其输出为

23%已处理。 46%已处理。 69%已处理。 92%已处理。 100%已处理。已处理552页的数据库'SaveStuff',文件1上的文件'SaveStuff'。已处理2页的数据库'SaveStuff',文件1上的文件'SaveStuff_log'。RESTORE DATABASE在0.564秒(7.667 MB /秒)内成功处理了554页。

此代码的问题在于它包含“'SaveStuff'周围的类似符号,它使用sql sendmail弄乱了T-SQL。

我通过使用replace解决了这个问题。暂时有效。

主要目标是show输出单个行而不是一个长行。

23%已处理。

46%已处理。

69%已处理。

92%已处理。

已处理100%。

为数据库SaveStuff处理了552页,文件1上的文件SaveStuff。

已处理2页的数据库SaveStuff,文件1上的文件SaveStuff_log。

RESTORE DATABASE在0.564秒(7.667 MB /秒)内成功处理了554页。

任何建议

$RestoreResults = "23 percent processed. 46 percent processed. 69 percent processed. 92 percent processed. 100 percent processed. Processed 552 pages for database 'SaveStuff', file 'SaveStuff' on file 1. Processed 2 pages for database 'SaveStuff', file 'SaveStuff_log' on file 1. RESTORE DATABASE successfully processed 554 pages in 0.564 seconds (7.667 MB/sec)."



$Restore = $RestoreResults -replace "'", " "

Write-Host $Restore



$Restore = $Restore -replace '. ', '.`n'

Write-Host $Restore

1 个答案:

答案 0 :(得分:0)

在您的RESTORE DATABASE命令中添加“ STATS = 100 ”以消除这些不必要的还原百分比。