如何解决使用New-AzSqlDatabaseExport在Powershell中导出Azure数据库不会总是返回OperationStatusLink,从而导致异常
我正在编写一个Powershell脚本,以使用New-AzsqlDatabaseExport命令将Azure数据库导出到bacpac文件中(遵循文档here。
运行powershell脚本时,得到的结果不一致。当我打开一个新的Powershell窗口并运行导出数据库脚本时,所有操作均按预期运行,并且返回了OperationStatusLink,因此可以在导出过程中检查导出的进度。但是,一旦导出完成,如果我尝试在同一窗口中第二次运行powershell脚本,则导出将不会返回OperationStatusLink。这将导致Get-AzsqlDatabaseImportExportStatus失败,并发生以下异常:由于参数'OperationStatusLink'为空,因此无法将其绑定到参数'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 "********" `
BackupAzureDatabase.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
}
解决方法
这似乎是2.10.0中引入的Az.Sql模块的回归,并且在当前版本(2.11.0)中仍然有效
症状: 启动导出操作时,引发以下异常:New-AzSqlDatabaseExport:缺少ImportExport操作所需的“ networkIsolation”参数。
问题: 这应该是可选参数,并且参数名称不正确,而应改为-UseNetworkIsolation。
解决方法: 将您的脚本定位到该模块的旧版本,2.9.1似乎可以。
长期解决方案: 已经提交的修复程序,应该在模块的下一版本中可用。
信息来源: https://github.com/Azure/azure-powershell/issues/13097
更新2020-11-04 该模块的最新版本已包含此修复程序。 (2.11.1) https://www.powershellgallery.com/packages/Az/5.0.0
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。