В Powershell Извлечение печатного сообщения из SSMS

Наша команда DBA не проверяет резервные копии, используя приведенный ниже TSQL (который можно легко выполнить после резервного копирования и почти не принимает время, поэтому я не понимаю, почему нет):

RESTORE VERIFYONLY
FROM DISK = 'D:\Backups\LOCATION'

У них были проблемы в прошлом, поэтому, хотя мы думаем, что они узнают от него, они этого не сделали. Я создал сценарий Powershell для этого, потому что у нас есть более 100 серверов, и я просто хочу запустить этот скрипт со всеми резервными копиями только для того, чтобы убедиться, что они действительны. Следующий скрипт работает правильно (в том, что он не прерывает или не бросает ошибки), мне любопытно, есть ли способ получить напечатанное сообщение обратно в Powershell, которое мы обычно получаем в SSMS, где указано Резервное копирование, установленное на файл 1 действителен как подтверждение.

$SqlCon = New-Object System.Data.SqlClient.SqlConnection
$SqlCon.ConnectionString = "SERVER=SERV\INST;Integrated Security=true;DATABASE=master"

$baks = Get-ChildItem "D:\Backups\" -Filter *.BAK

foreach ($bak in $baks)
{
    $SqlCon.Open()
    $cd = New-Object System.Data.SqlClient.SqlCommand
    $cd.Connection = $SqlCon

    $cd.CommandText = "RESTORE VERIFYONLY FROM DISK = @f"
    $cd.Parameters.Add("@f", $bak.FullName)
    $cd.ExecuteNonQuery()
    $SqlCon.Close()
}
10 голосов | спросил Question3CPO 6 FriEurope/Moscow2013-12-06T01:07:24+04:00Europe/Moscow12bEurope/MoscowFri, 06 Dec 2013 01:07:24 +0400 2013, 01:07:24

1 ответ


14

Захват вывода InfoMessage (PRINT, RAISERROR) из SQL Server с помощью PowerShell

Трюк, как указывает Джонатан, заключается в том, что вам нужно, чтобы слушатель подключался к диспетчеру соединений, слушая действия печати или ошибки.

$cd.Parameters.Add("@f", $bak.FullName) | Out-Null
$handler = [System.Data.SqlClient.SqlInfoMessageEventHandler] {param($sender, $event) Write-Host $event.Message }
$SqlCon.add_InfoMessage($handler)
$SqlCon.FireInfoMessageEventOnUserErrors = $true  

Я также передал вывод добавления параметра в Out-Null, поскольку это был шум, который мне не нужен.

ответил billinkc 6 FriEurope/Moscow2013-12-06T01:41:03+04:00Europe/Moscow12bEurope/MoscowFri, 06 Dec 2013 01:41:03 +0400 2013, 01:41:03

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132