Не получается вывод после успешного выполнения сценариев SQL через powershell - PullRequest
0 голосов
/ 06 мая 2019

Мне нужно автоматизировать один процесс, чтобы избавиться от ежедневного сокращения усилий в нашей организации.Нам нужно выполнить несколько сценариев на разных экземплярах SQL Server, и каждый сценарий также содержит имя базы данных.

Итак, изначально наш клиент поместил все сценарии в определенное место, и мне нужно выполнить каждый из сценариев, а затем переместитьфайл скрипта в другую папку.

После того, как скрипт получил ошибку, он зарегистрировал ошибку и был создан один файл.

После успешного выполнения мне нужно сгенерировать один файл журнала, в котором также генерируются все сценарии успешных результатов.Например, когда мы выполняем один сценарий в SSMS, после выполнения сценария он генерирует сообщение типа «затронут 1 строка».

Как я могу это сделать?

invoke-sqlcmd -inputfile "E:\test.sql" -serverinstance ".\Your_Instance_Name" -database "user" | out-File -filepath "E:\result.txt"

1 Ответ

0 голосов
/ 06 мая 2019

Сообщение «1 затронутая строка» генерируется автоматически, если не указано set nocount .

Клиентское приложение, такое как Invoke-SqlCmd, SSMS и sqlcmd, может делать что угодно с номером счетчика строк. SSMS и sqlcmd выводят его по умолчанию, Invoke-SqlCmd, похоже, этого не делает. Это не ошибка, хотя это, конечно, немного удивительно.

Простой подход заключается в выдаче явного выбора для @@ROWCOUNT. Вот так

insert mydb.schema.table(column1, column2....) values(...); select @@rowcount;

Или используйте вместо него sqlcmd.exe.

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