gpt4 book ai didi

sql-server - 从 Powershell 调用存储过程后将其输出存储在文件中

转载 作者:行者123 更新时间:2023-12-02 01:46:22 25 4
gpt4 key购买 nike

我试图在远程服务器上调用 SP(Ola 的维护脚本!)(那部分代码有效),SP 的输出是 DBCC CHECKDB 的结果(所以它在消息选项卡中)。

我试图将一些代码放在一起以将此消息输出捕获到远程服务器上的一个文件中,但是该文件没有被创建,尽管 SP 完成得很好。

$OutputFile = "\\XXX\E$\SQLAdmin\DatabaseCheckDB\ScriptOutput\ScriptOutput.txt"

$handler = [System.Data.SqlClient.SqlInfoMessageEventHandler] {param($sender, $event) Out-File -filepath $OutputFile -inputobject $event.Message };

$SqlConnection.add_InfoMessage($handler);
$SqlConnection.FireInfoMessageEventOnUserErrors = $true;
$SqlConnection = new-Object System.Data.SqlClient.SqlConnection("Server=XXX;DataBase=master;Integrated Security=SSPI")
$SqlConnection.Open() | Out-Null

$cmd = new-Object System.Data.SqlClient.SqlCommand("dbo.DatabaseIntegrityCheck", $SqlConnection)
$cmd.CommandType = [System.Data.CommandType]'StoredProcedure'

$cmd.Parameters.Add("@Databases","ALL_DATABASES") | Out-Null

$cmd.ExecuteNonQuery() | Out-Null

$SqlConnection.Close()

任何人都可以看到我在这里做错了什么吗?提前致谢!

最佳答案

您是否安装了 SQL Powershell 模块 (sqlps)?如果是这样,那么您可以使用它并将 Verbose 流(包含来自 SQL 的打印消息)的输出通过管道传输到您的文件。

Invoke-Sqlcmd -Query 'DBCC CHECKDB' `
-ServerInstance '(local)' `
-Database 'tempdb' `
-Verbose 4>&1 |
Out-File c:\temp\test.txt

如果这不是一个选项,那么我想我已经在您的原始代码中发现了问题 - 您连接了 InfoMessage 事件,但是您随后继续创建一个全新的 SqlConnection。这个新的 SqlConnection 没有事件处理程序,因此不会响应任何打印的消息。

尝试替换

$SqlConnection.add_InfoMessage($handler); 
$SqlConnection.FireInfoMessageEventOnUserErrors = $true;
$SqlConnection = new-Object System.Data.SqlClient.SqlConnection("Server=XXX;DataBase=master;Integrated Security=SSPI")

$SqlConnection = new-Object System.Data.SqlClient.SqlConnection("Server=XXX;DataBase=master;Integrated Security=SSPI")
$SqlConnection.add_InfoMessage($handler);
$SqlConnection.FireInfoMessageEventOnUserErrors = $true;

关于sql-server - 从 Powershell 调用存储过程后将其输出存储在文件中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25492830/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com