PMShell में SSMS से मुद्रित संदेश प्राप्त करना


12

हमारी DBA टीम नीचे का उपयोग करके बैकअप को सत्यापित नहीं करती है TSQL(जिसे आसानी से पोस्ट-बैकअप किया जा सकता है और लगभग कोई समय नहीं लगता है, इसलिए मुझे ऐसा नहीं करना चाहिए):

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

उनके पास अतीत में मुद्दे थे, इसलिए भले ही हमें लगता था कि वे इससे सीख लेंगे, लेकिन उन्होंने ऐसा नहीं किया। मैंने ऐसा करने के लिए एक पॉवरशेल स्क्रिप्ट बनाई क्योंकि हमारे पास लगभग 100+ सर्वर हैं और मैं इस स्क्रिप्ट को केवल सभी बैकअप के खिलाफ चलाना चाहता हूं ताकि यह सुनिश्चित हो सके कि वे वैध हैं। नीचे दी गई स्क्रिप्ट सही ढंग से चलती है (इसमें वह त्रुटियां नहीं तोड़ती या फेंकती हैं), मुझे उत्सुकता है कि क्या पॉवरशेल में छपे संदेश को वापस लाने का कोई तरीका है जो हम सामान्य रूप से 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()
}

4

Invoke-SqlCmd ... -Verboseयह भी अच्छा है अगर आप बाद में उपयोग के लिए आउटपुट को पुनर्निर्देशित करना चाहते हैं बजाय इसे तुरंत होस्ट पर प्रिंट करने के।
पीटर वांडिवियर

जवाबों:


19

PowerShell का उपयोग करके SQL सर्वर से InfoMessage Output (PRINT, RAISERROR) को कैप्चर करना

जोनाथन के रूप में चाल, यह बताती है कि आपको प्रिंट या त्रुटि क्रियाओं के लिए सुनने वाले कनेक्शन प्रबंधक से जुड़ा श्रोता होना चाहिए।

$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क्योंकि यह शोर था जिसकी मुझे आवश्यकता नहीं थी।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.