2013-07-10 3 views
1

Любой, кто знает, как направить print ' ' в sql-скрипт на файл журнала при использовании Invoke-Sqlcmd?Как перенаправить вывод печати SQL в файл журнала?

Я пробовал использовать sqlcmd -o someoutfile.txt, но он перезаписывается, он не добавляется к существующему файлу. И если возникает ошибка SQL, в файл отправляется только сообщение об ошибке, а не print ' '. При использовании Invoke-Sqlcmd | out-file someoutfile.txt -Append он добавляет только Write-Output и, в конечном итоге, SQL-ошибки, но не print ' ' в sql-скрипте.

Кто-нибудь нашел решение для этого?

+0

Вы пытались перенаправить все выходные потоки в выходной файл, в случае, если сообщение записано, например. многословный или отладочный поток? ('Invoke-Sqlcmd *> & 1 | Out-File ...') –

ответ

3

Invoke-SqlCmd реализует инструкции T-SQL PRINT и RAISERROR с использованием параметра verbose. Для захвата подробного вывода, сначала нужно включить параметр в вызове для вызова-SQLCMD т.е. Invoke-SQLCMD -verbose и рядом вы можете сделать один из двух вещей:

Если вы используете Powershell V3 или выше, вы можете перенаправить подробный вывод:

invoke-sqlcmd -verbose 4>&1 | outfile someoutfile.txt 

Если вы используете Powershell V2 вы не можете перенаправить подробный вывод в файл, однако вы можете использовать запуск транскрипт, чтобы отправить весь вывод экрана в файл. Один из них имеет такой подход - он не будет работать с шагом задания агента SQL Powershell. Однако он будет работать с шагом работы cmdexec, который вызывает powershell.exe.

+0

Я использую Powershell v2, а verbose не включает в себя скрипт sql print '', а только write-output в сценарии powershell. Кажется, что обновление до версии v3 может решить проблему. Спасибо. –

0

И один момент ...

Команда "Invoke-Sqlcmd" есть параметр -SeverityLevel. SeverityLevel определяет нижний предел для уровня серьезности сообщения об ошибке. Invoke-Sqlcmd возвращается в ERRORLEVEL PowerShell.

Invoke-Sqlcmd не сообщает о серьезности информационных сообщений, имеющих серьезность 10!

Уровень важности 10: Информация о состоянии Это информационное сообщение, которое указывает на проблему, вызванную ошибками в введенной пользователем информации. Уровень серьезности 0 не отображается в SQL Server.

Смежные вопросы