微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用New-AzSqlDatabaseExport在Powershell中导出Azure数据库不会总是返回OperationStatusLink,从而导致异常

如何解决使用New-AzSqlDatabaseExport在Powershell中导出Azure数据库不会总是返回OperationStatusLink,从而导致异常

我正在编写一个Powershell脚本,以使用New-AzsqlDatabaseExport命令将Azure数据库导出到bacpac文件中(遵循文档here

运行powershell脚本时,得到的结果不一致。当我打开一个新的Powershell窗口并运行导出数据库脚本时,所有操作均按预期运行,并且返回了OperationStatusLink,因此可以在导出过程中检查导出的进度。但是,一旦导出完成,如果我尝试在同一窗口中第二次运行powershell脚本,则导出将不会返回OperationStatusLink。这将导致Get-AzsqlDatabaseImportExportStatus失败,并发生以下异常:由于参数'OperationStatusLink'为空,因此无法将其绑定到参数'OperationStatusLink'。

下面是重现步骤以及powershell脚本的摘要。关于我可能尝试确保New-AzsqlDatabaseExport始终返回OperationStatusLink的任何建议,将不胜感激。

复制步骤:

  1. 打开powershell窗口

  2. 登录到Azure

  3. 运行脚本以将数据库导出到bacpac

    预期结果:导出成功,并提供OperationStatusLink

    实际结果:导出成功,并提供了OperationStatusLink

  4. 运行脚本以将数据库导出到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 举报,一经查实,本站将立刻删除。