So versuche ich ein Powershell-Skript, das eine Sicherung von Datenbanken erstellt, komprimiert die Sicherung und lädt sie auf eine FTP-Site. Hier ist ein Teil meines SkriptMachen Sie Powershell warten auf SQL-Skript/Abfrage zu beenden
Beispielskript/Code:
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!"
Ich wünsche einen Code nach dem verhindern „Invoke-Sqlcmd .......“ Teil von, bis der ausgeführten Das SQL-Skript, das die Datenbank sichert, ist abgeschlossen, da die Komprimierungszeile die Sicherung der Datenbank nicht finden kann, da die Sicherung relativ lange dauert.
Ich bin extrem neu im Umgang mit Powershell und habe nicht ganz verstanden, was ein paar der anderen möglicherweise verwandten Fragen, die ich gefunden habe, als eine Lösung anbieten, da ich meine SQL-Anweisung anders nenne.
Mögliche Verwandte Fragen:
Get Powershell to wait for an SQL command to execute
Powershell run SQL job, delay, then run the next one
Was, wenn Sie sie in eine Funktion setzen und auf die Rückkehr warten. Kein Async. – johnny
Haben Sie eine Idee, auf was ich bei der Rückkehr nachsehen könnte? Das Skript wird die vorhandene Sicherung ersetzen, sodass ich nicht überprüfen konnte, ob die Datei vorhanden ist. –
'Invoke-SqlCmd' ist bereits ein synchrones Cmdlet. Wenn es zum nächsten Schritt geht, liegt das daran, dass die Anweisung die Ausführung beendet hat. –