簡體   English   中英

使Powershell等待SQL腳本/查詢完成

[英]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語句稱為另一種方式。

可能的相關問題:

獲取Powershell以等待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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM