データベースのバックアップを作成し、バックアップを圧縮し、FTPサイトにアップロードするPowershellスクリプトを作成しようとしています。ここに私のスクリプトの一部はPowershellがSQLスクリプト/クエリの終了を待つようにする
サンプルスクリプト/コード:
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!"
私はまで実行されることから、「.......起動-の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'はすでに同期cmdletです。次のステップに進むなら、ステートメントが実行を終了したからです。 –