我正在编写一个 powershell 脚本,以使用 New-AzSqlDatabaseExport 命令将 Azure 数据库导出到 bacpac 文件(按照此处的文档。
当我运行 powershell 脚本时,我得到的结果是不一致的。当我打开一个新的 powershell 窗口并运行导出数据库脚本时,一切都按预期运行,我得到一个 OperationStatusLink,因此我可以在导出过程中检查它的进度。但是,一旦导出完成,如果我尝试在同一窗口中第二次运行 powershell 脚本,导出将不会返回 OperationStatusLink。这将导致 Get-AzSqlDatabaseImportExportStatus 失败并出现以下异常:无法将参数绑定到参数“OperationStatusLink”,因为它为空。
以下是重现的步骤,以及一段 powershell 脚本。任何关于我可以尝试确保 New-AzSqlDatabaseExport 始终返回 OperationStatusLink 的建议将不胜感激。
重现步骤:
打开powershell窗口
登录到 Azure
运行脚本将数据库导出到 bacpac
预期结果:导出成功并提供 OperationStatusLink
实际结果:导出成功并提供 OperationStatusLink
运行脚本将数据库导出到 bacpac
预期结果:导出成功并提供 OperationStatusLink
实际结果:导出成功,未提供 OperationStatusLink
Powershell脚本:
Connect-AzAccount
Select-AzSubscription -SubscriptionName 'subscription name'
BackupAzureDatabase.ps1 `
-DatabaseName "testDB" `
-ResourceGroupName "group1" `
-ServerName "testserver" `
-serverAdmin "admin" `
-serverPassword "********" `
备份AzureDatabase.ps1:
Param(
[string][Parameter(Mandatory=$true)] $DatabaseName,
[string][Parameter(Mandatory=$true)] $ResourceGroupName,
[string][Parameter(Mandatory=$true)] $ServerName,
[string][Parameter(Mandatory=$true)] $ServerAdmin,
[string][Parameter(Mandatory=$true)] $ServerPassword,
)
Process{
# some code to get the storage info and credentials
$ExportRequest = New-AzSqlDatabaseExport `
-ResourceGroupName $ResourceGroupName `
-ServerName $ServerName `
-DatabaseName $DatabaseName `
-StorageKeytype $StorageKeytype `
-StorageKey $PrimaryKey `
-StorageUri $BacpacUri `
-AdministratorLogin $Creds.UserName `
-AdministratorLoginPassword $Creds.Password
$ExportStatus = Get-AzSqlDatabaseImportExportStatus `
-OperationStatusLink $ExportRequest.OperationStatusLink
# Get-AzSqlDatabaseImportExportStatus throws an exception, since OperationStatusLink is empty/null most of the time
}