2

任何知道如何print ' '在使用时将 sql 脚本路由到日志文件的人Invoke-Sqlcmd

我尝试使用sqlcmd -o someoutfile.txt,但它会覆盖,它不会附加到现有文件。如果发生 SQL 错误,则只会将错误消息发送到文件,而不是print ' '. 使用 时Invoke-Sqlcmd | out-file someoutfile.txt -Append,它仅附加Write-Output并最终附加 SQL 错误,而不是print ' '执行的 sql 脚本中的 。

有没有人找到解决方案?

4

2 回答 2

4

Invoke-SqlCmd 使用详细参数实现 T-SQL PRINT 语句和 RAISERROR。要捕获详细输出,首先您需要在调用 invoke-sqlcmd 时包含参数,即invoke-sqlcmd -verbose,接下来您可以执行以下两项操作之一:

如果您使用的是 Powershell V3 或更高版本,您可以重定向详细输出:

invoke-sqlcmd -verbose 4>&1 | outfile someoutfile.txt

如果您使用的是 Powershell V2,则无法将详细输出重定向到文件,但是您可以使用 start-transcript 将所有屏幕输出发送到文件。这种方法的一个问题——它不适用于 SQL 代理 Powershell 作业步骤。但是,它将与调用 powershell.exe 的 cmdexec 作业步骤一起使用。

于 2013-07-10T11:07:23.757 回答
0

还有一瞬间……

命令“Invoke-Sqlcmd”有一个参数-SeverityLevel。SeverityLevel 指定 Invoke-Sqlcmd 返回到 ERRORLEVEL PowerShell 的错误消息严重级别的下限。

Invoke-Sqlcmd 不报告严重性为 10 的信息性消息的严重性!

严重级别 10:状态信息 这是一条信息性消息,指示由用户输入的信息错误引起的问题。严重级别 0 在 SQL Server 中不可见。

于 2016-05-11T15:01:45.843 回答