Я создал образец Runbook Powershell службы автоматизации Azure. Я пытаюсь выполнить команду SQL, а затем распечатать сообщения из этой команды в вывод рабочей книги.
Мой код взят из Захват вывода InfoMessage из SQL Server с помощью PowerShell, и он работает, если я запускаю его локально:
Write-Output "Starting"
$conn = New-Object System.Data.SqlClient.SqlConnection "Data Source=abc.database.windows.net,1433;Initial Catalog=def;Integrated Security=False;User ID=ghj;Password=qwe"
## Attach the InfoMessage Event Handler to the connection to write out the messages
$handler = [System.Data.SqlClient.SqlInfoMessageEventHandler] {param($sender, $event) Write-Output $event.Message };
$conn.add_InfoMessage($handler);
$conn.FireInfoMessageEventOnUserErrors = $true;
$conn.Open();
$cmd = $conn.CreateCommand();
$cmd.CommandText = "PRINT 'This is the message from the PRINT statement'";
$cmd.ExecuteNonQuery();
$cmd.CommandText = "RAISERROR('This is the message from the RAISERROR statement', 10, 1)";
$cmd.ExecuteNonQuery();
$conn.Close();
Write-Output "Done"
После запуска книги я вижу Starting
, -1
(из результата ExecuteNotQuery
) и Done
, но не сообщения от SQL.
Register-ObjectEvent
из этот ответ тоже не работает:
Register-ObjectEvent : Cannot register for the specified event.
An event with the name 'InfoMessage' does not exist. Parameter name: eventName
Что я делаю неправильно?
$cmd.CommandText
- person TheGameiswar   schedule 29.01.2018Write-Output
что-то вроде этогоWrite-Output "Output inside of function"
- person TheGameiswar   schedule 29.01.2018Write-Output
в приведенном выше коде. - person Mikhail Shilkov   schedule 29.01.2018but not messages from SQL
я не вижу причин, по которым они должны быть напечатаны на панели вывода. - person TheGameiswar   schedule 29.01.2018SqlInfoMessageEventHandler
используется для обработки информационных событий, и я вызываюWrite-Output
из обработчика. Дана хранимая процедура, и у нее нет выходных параметров, она просто делаетPRINT
вызовов. ВыходExecuteNonQuery
равен-1
- person Mikhail Shilkov   schedule 29.01.2018