[英]Make Powershell Wait for SQL Script/Query to Finish
因此,我試圖編寫一個Powershell腳本來創建數據庫備份,壓縮備份並將其上傳到FTP站點。 這是我腳本的一部分
示例腳本/代碼:
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語句稱為另一種方式。
可能的相關問題:
您確定...script that backs up the database
不是僅拋出錯誤而ps仍在繼續嗎?
這似乎表明它實際上確實在等待該調用:
Write-Host "starting"
push-location
Invoke-Sqlcmd -Query "waitfor delay '00:00:15';" -ServerInstance "$serverName"
pop-location
Write-Host "complete"
在任何情況下,都應通過文件不存在的中止操作或進行輪詢(直到將.bak文件寫入磁盤時不是100%)來防止文件存在。
# abort
if(!(test-path $file)) {
}
# or, poll
while(!(test-path $file)) {
start-sleep -s 10;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.