Так что я пытаюсь написать сценарий Powershell, который создает резервную копию баз данных, сжимает резервную копию и загружает ее на FTP-сайт. Вот часть моего сценарияСделать Powershell ждать SQL Script/Query для завершения
Пример сценария/Код:
Write-Host "Backup of Database " $databaseName " is starting"
push-location
Invoke-Sqlcmd -Query "--SQL Script that backs up database--" -ServerInstance "$serverName"
pop-location
Write-Host "Backup of Database " + $databaseName " is complete"
#Create a Zipfile of the database
Write-Host "Compressing Database and creating Zip file...."
sz a -t7z "$zipfile" "$file"
Write-Host "Completed Compressing Database and creating Zip file!"
Я хотел, чтобы предотвратить любой код после «Invoke-Sqlcmd .......» часть из не выполняется до тех пор, SQL-сценарий, поддерживающий базу данных, завершен, потому что линия сжатия не находит резервную копию базы данных, потому что резервное копирование занимает довольно много времени.
Я чрезвычайно новичок в использовании Powershell и не совсем понял, что некоторые другие, возможно, связанные вопросы, которые я нашел, предлагали в качестве решения, поскольку я называю свой SQL-запрос другим способом.
Возможные вопросы, относящиеся:
Get Powershell to wait for an SQL command to execute
Powershell run SQL job, delay, then run the next one
Что делать, если вы поместите их в функцию и подождите по возвращении. Нет асинхронизации. – johnny
У вас есть идея о том, что я могу проверить по возвращении? Сценарий заменит существующую резервную копию, поэтому я не могу проверить, существует ли файл. –
'Invoke-SqlCmd' уже является синхронным командлетом. Если он перейдет к следующему шагу, это потому, что завершение выполнения завершено. –