Выполнение скрипта через возможности PowerShell
-
26-09-2020 - |
Вопрос
Позвольте сказать, что у меня нет возможности создавать сохраненную процедуру, но мне необходимо регулярно запускать один и тот же запрос.Смогу ли я поставить свой запрос в документ .txt и сможет запустить его от PowerShell, позвонив ему?Какой синтаксис я использовал для запуска myquery.txt?Поместите другой путь, каков способ заканчиваться неспособным использовать сохраненную процедуру на запросе, который должен быть сделан в один?
Решение
Это зависит от ваших версий PowerShell, но у вас есть несколько вариантов.Я склонен использовать несколько из них, основываясь на сценарии, но в вашем случае, почему бы не просто вызвать генеракодицетагкод из вашего скрипта PowerShell?Он имеет наибольшую совместимость, это менее багги и более совместимо, чем SQLCMD.EXE
, а за пределами Invoke-SQLCMD
я не видел MS Explace GeneracodicTagcode.Это будет выглядеть что-то подобное:
#Check SQLCMD /? for help and syntax
$Query = "SELECT @@SERVERNAME"
SQLCMD -S "ServerName" -E #integrated security# -q $Query
.
В противном случае вам придется установить пакет функции SQL Server из V12 и выше, затем используйте DSC
, который имеет некоторые проблемы совместимости и не обеспечивают слишком много преимуществ, кроме как в некоторых случаях, которые я нашел.Вы также получаете Full SMO функциональные возможности с пакетом функций, но это сверхугольника и слишком много конфигурации для простого запроса.
Другие советы
Я замечаю, что вы пометили вопрос netezza
, но я не уверен, что SQLCMD (предлагается в принятом ответе) работает с Netezza или только с SQL Server.Альтернатива является использование Возбуждение Workbench для Netezza , который предоставляет Неоплаченная командная линия опция :
"C:\Program Files (x86)\Aginity\Aginity Workbench for PureData System for Analytics(x64)\Aginity.NetezzaWorkbench.exe" --unattended --stdout MyOutput.txt --stderr MyErrors.txt --description "New Execute SQL Command" --action exec --connstr "Driver={NetezzaSQL};server=mynzbox;UserName=myuser;Password=mypwd;Database=system;LoginTimeout=120" --dbtype NetezzaODBC --sqlfile MyQuery.sql
. Эквивалент SQLCMD на Netezza является NZSQL, который может быть установлен на обоих Windows и Unix. Мы запускаем автоматические сценарии PowerShell, которые выполняют операторы SQL через NZSQL, и это работает нормально :)