我的powershell部署脚本创建了一个参考Azure数据库的副本,以对以下内容运行一些集成测试:
create database MyTest1 as copy of MyRefDb
问题是新的数据库不能立即可用:
服务器'abc'上的数据库'MyTest1'当前不是 可用。请稍后重试连接。
当我尝试使用MyTest1
命令删除drop database
时,存在类似的问题,与本地(内部部署)SQL Server实例不同,它不会立即发生。
在更改状态时,如何可靠地等待脚本中的Azure测试数据库可用性?
答案 0 :(得分:2)
要检查复制操作的状态,您可以在新数据库上查询sys.databases
和sys.dm_database_copies
个视图。
当复制操作正在进行时,state_desc
列sys.databases
视图的值将为COPYING
。
如果复制操作成功,则值为ONLINE
。
如果失败,则值为SUSPECT
。
有关详细信息,请参阅此处:https://docs.microsoft.com/en-us/azure/sql-database/sql-database-copy-transact-sql。
答案 1 :(得分:1)
使用powershell
实际上很容易Write-Output "Start database copy"
$dbCopy = Start-AzureSqlDatabaseCopy -ServerName $ServerName -DatabaseName $SourceDbName -PartnerDatabase $targetDbName
try
{
WHILE ($dbCopy)
{
Sleep 10
Write-Output "Check if it's done"
$dbCopy = Get-AzureSqlDatabaseCopy -ServerName $ServerName -DatabaseCopy $dbCopy -ErrorAction SilentlyContinue
Write-Output "$dbCopy"
# Sleep 10 seconds
}
$Copy_DB = Get-AzureSqlDatabase -ServerName $ServerName -DatabaseName $targetDbName
Write-Output "COPY Completed"
}
catch{ Throw "FAILED: Cannot Get-AzureSqlDatabaseCopy" }