【发布时间】:2016-12-23 21:46:59
【问题描述】:
所以我正在尝试编写一个 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 语句。
可能的相关问题:
【问题讨论】:
-
如果将它们放在一个函数中并等待返回会怎样。没有异步。
-
你知道我可以在退货时检查什么吗?该脚本将替换现有备份,因此我无法检查该文件是否存在。
-
Invoke-SqlCmd已经是一个同步 cmdlet。如果要进入下一步,那是因为语句执行完毕。 -
@BaconBits 我不知道。后来我确实看到了备份已经创建,但是脚本的压缩部分失败了,所以我想也许在调用脚本的压缩部分时备份还没有完成。我会仔细看看的。感谢您的信息。
标签: sql-server powershell