2

我正在编写一个 powershell 脚本,以使用 New-AzSqlDatabaseExport 命令将 Azure 数据库导出到 bacpac 文件(按照此处的文档。

当我运行 powershell 脚本时,我得到的结果是不一致的。当我打开一个新的 powershell 窗口并运行导出数据库脚本时,一切都按预期运行,我得到一个 OperationStatusLink,因此我可以在导出过程中检查它的进度。但是,一旦导出完成,如果我尝试在同一窗口中第二次运行 powershell 脚本,导出将不会返回 OperationStatusLink。这将导致 Get-AzSqlDatabaseImportExportStatus 失败并出现以下异常:无法将参数绑定到参数“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 "********" `

备份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
}
4

1 回答 1

1

这似乎是 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

于 2020-10-21T19:07:24.940 回答