首页 > 解决方案 > 捕获从 SQL Server 输出的消息

问题描述

我有以下创建表格的 PS 脚本。我想从 sql server 捕获消息输出(命令已成功完成。)。有没有办法做到这一点?

我尝试了 -Verbose 开关,但没有帮助。

PS文件:

$CreateTableFile = "C:\DBScripts\CreateTable.sql"
Invoke-Sqlcmd -ServerInstance xyz -InputFile $CreateTableFile -Database "PSLearning" -Verbose

CreateTable.sql:
CREATE TABLE abc (
  column_1 int,
)

标签: sql-serverpowershell

解决方案


你没有说你想捕捉什么。一切或只是错误。

错误,您可以使用 try/catch,一切都可以使用 Start-Transcript,或编写自己的日志代码,或诸如打印脚本之类的东西。

例子:

Invoke-Sqlcmd -Query "update your database set column_name ={expression} where <search_condition>; PRINT 'update successfully';" –Verbose

如内置帮助文件中所述……</p>

# get function / cmdlet details
(Get-Command -Name Invoke-SqlCmd).Parameters
Get-help -Name Invoke-SqlCmd -Full
Get-help -Name Invoke-SqlCmd -Online
Get-help -Name Invoke-SqlCmd -Examples

Get-help -Name Invoke-SqlCmd -Examples
# -------------------------- EXAMPLE 5 --------------------------
C:\PS>Invoke-Sqlcmd -Query "PRINT N'abc'" -Verbose
VERBOSE: abc
# Description
# -----------
# This example uses the PowerShell -Verbose parameter to return the message output of the PRINT command.

...或在线的。

调用-Sqlcmd

您可以通过指定 Verbose 参数来显示 SQL Server 消息输出,例如 SQL PRINT 语句的结果

示例 5:运行查询并显示详细输出

PSet-Location "SQLSERVER:\SQL\MyComputer\MainInstance"
Invoke-SqlCmd -Query "PRINT N'abc'" -Verbose
VERBOSE: abc

推荐阅读