Функция sqlcmd не выдает сообщение об ошибке, если какой-либо сценарий sql имеет ошибку при выполнении powershell - PullRequest
0 голосов
/ 13 мая 2019

Использовал функцию Sqlcmd в сценарии PowerShell для выполнения нескольких сценариев SQL, чтобы получить результат в виде вывода ssms, но через sqlcmd он не выдает сообщение об ошибке или не может записать метод catch, если какой-либо сценарий SQL содержит ошибку. может зафиксировать ошибку, если какой-либо скрипт имеет ошибку.

с помощью команды Invoke-Sqlcmd. Я не могу записать выходные данные выполнения скрипта, которые SSMS дал после выполнения любого обновления или оператора вставки, такого как «1 строка затронута», поэтому мне нужно использовать команду sqlcmd для выполнения сценариев sql и теперь все записи сценариев перехвачены, но по команде Invoke-sqlcmd, если любая ошибка в сценариях sql переходит в блок catch и показывает ошибку, но когда я использую SQLCMD, если в сценарии SQL есть какая-либо ошибка, она не переходит в перехват заблокируйте его в блоке try и продолжайте.

Так что, пожалуйста, помогите мне теперь, как я могу перехватить и переместить его, чтобы перехватить блок, или я могу перехватить ошибку, как я делал до использования команды Invoke-SQLCMD.

это продолжение этой ссылки: Не получается вывод после успешного выполнения сценариев SQL через powershell

Вот мой блок кода, и он не собирается перехватывать блок:

Try {

                  #$result = "Sqlcmd.exe -S $InstanceNAme -d $dbname -Q ""Insert into [DUR2_A].[dbo].[emp_info] values(1,'Ram','Kolkata')"""
                  #Invoke-Expression $result | Out-File filesystem::$ScriptOutPutpath$scriptfilesc$out
                  sqlcmd -S $InstanceNAme -i $scriptfiles1 -o $ScriptOutPutpath$scriptfilesc$out -m1
                  Move-Item filesystem::$scriptfiles1 filesystem::$Scriptbackuppath


                }
                catch
                {


                     $ErrorMessage = $_.Exception.Message
                     $FailedItem = $_.Exception.ItemName
                     echo "Error for $scriptfilesc - $($_.Exception.Message)" | Out-File filesystem::$error_log$scriptfilesc$errorout
                     Send-MailMessage -from test@test.com -To IO-SD.GP.test@test.com -SmtpServer mailrelay.test.com -Subject "DUR Error" -Body "Script $scriptfilesc has not been executed becasue of Error Message $ErrorMessage.Kindly check the attachd script and error message" -Attachments filesystem::$error_log$scriptfilesc$errorout,filesystem::$scriptfiles1
                     Move-Item filesystem::$scriptfiles1 filesystem::$Scriptbackuppath


                }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...