使用 New-AzSqlDatabaseExport 在 powershell 中导出 azure 数据库并不总是 return OperationStatusLink,导致异常
Exporting azure database in powershell with New-AzSqlDatabaseExport does not always return the OperationStatusLink, resulting in an exception
我正在编写一个 powershell 脚本,使用 New-AzSqlDatabaseExport 命令将 Azure 数据库导出到 bacpac 文件(遵循文档 here.
当我运行 powershell 脚本时,得到的结果不一致。当我打开一个新的 powershell window 和 运行 导出数据库脚本时,一切都如预期的那样 运行,我得到了一个 OperationStatusLink,所以我可以检查导出的进度进步。但是,一旦导出完成,如果我在同一个 window 中第二次尝试 运行 运行 powershell 脚本,导出将不会 return OperationStatusLink。这将导致 Get-AzSqlDatabaseImportExportStatus 失败并出现以下异常:无法将参数绑定到参数 'OperationStatusLink' 因为它为 null。
以下是重现的步骤,以及一段 powershell 脚本。任何关于我可以尝试确保 New-AzSqlDatabaseExport 总是 returns OperationStatusLink 的建议将不胜感激。
重现步骤:
打开powershellwindow
登录到 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
我正在编写一个 powershell 脚本,使用 New-AzSqlDatabaseExport 命令将 Azure 数据库导出到 bacpac 文件(遵循文档 here.
当我运行 powershell 脚本时,得到的结果不一致。当我打开一个新的 powershell window 和 运行 导出数据库脚本时,一切都如预期的那样 运行,我得到了一个 OperationStatusLink,所以我可以检查导出的进度进步。但是,一旦导出完成,如果我在同一个 window 中第二次尝试 运行 运行 powershell 脚本,导出将不会 return OperationStatusLink。这将导致 Get-AzSqlDatabaseImportExportStatus 失败并出现以下异常:无法将参数绑定到参数 'OperationStatusLink' 因为它为 null。
以下是重现的步骤,以及一段 powershell 脚本。任何关于我可以尝试确保 New-AzSqlDatabaseExport 总是 returns OperationStatusLink 的建议将不胜感激。
重现步骤:
打开powershellwindow
登录到 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