New-AzSqlDatabaseImport 无法将参数绑定到参数 'OperationStatusLink',因为它为 null

New-AzSqlDatabaseImport Cannot bind argument to parameter 'OperationStatusLink' because it is null

尝试使用 PowerShell 和 New-AzSqlDatabaseImport 命令将数据库部署到 Azure SQL 时,我收到以下错误:

New-AzSqlDatabaseImport : An unexpected error occured while processing the request. Tracking ID: 'mytrackingid'
At C:\mydir\mypowershell.ps1:363 char:18
+ ... rtRequest = New-AzSqlDatabaseImport -ResourceGroupName "myresource ...
+                 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : CloseError: (:) [New-AzSqlDatabaseImport], CloudException
    + FullyQualifiedErrorId : Microsoft.Azure.Commands.Sql.ImportExport.Cmdlet.NewAzureSqlDatabaseImport
 
Get-AzSqlDatabaseImportExportStatus : Cannot bind argument to parameter 'OperationStatusLink' because it is null.
At C:\mydir\mypowershell.ps1:376 char:74
+ ... tExportStatus -OperationStatusLink $importRequest.OperationStatusLink
+                                        ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : InvalidData: (:) [Get-AzSqlDatabaseImportExportStatus], ParameterBindingValidationException
    + FullyQualifiedErrorId : ParameterArgumentValidationErrorNullNotAllowed,Microsoft.Azure.Commands.Sql.ImportExport.Cmdlet.GetAzureSqlDatabaseImportExportStatus

奇怪的是,我 运行 这个脚本在其他虚拟机上运行了 100 多次,我想知道这个虚拟机中是否发生了某些更改或关闭,能够从 blob 存储中获取所需的 bacpac 文件.

我已经检查了 blob 存储的生命周期,该页面上没有列出任何内容。 blob 和容器存在。

我已经安装了 Az 和 SQLServer 模块,并且能够使用 Connect-AzAccount 连接到 Azure,然后通过 Set-AzContext -SubscriptionId

设置我想要的订阅

我已经检查了 NSG,并且能够从 VM 上的浏览​​器打开网页我正在 运行使用以下 PowerShell 来自:

$importRequest = New-AzSqlDatabaseImport -ResourceGroupName "myresourcegroup" `
   -ServerName "5878956-sql" `
   -DatabaseName "mydatabase"`
   -DatabaseMaxSizeBytes "262144000" `
   -StorageKeyType "StorageAccessKey" `
   -StorageKey "mylongaccesskey" `
   -StorageUri "https://myblobs.blob.core.windows.net/mycontainer/mydatabase.bacpac" `
   -Edition "Standard" `
   -ServiceObjectiveName "S1" `
   -AdministratorLogin "azuresqladmin" `
   -AdministratorLoginPassword $(ConvertTo-SecureString -String "mypassword" -AsPlainText -Force)

# Check import status and wait for the import to complete
$importStatus = Get-AzSqlDatabaseImportExportStatus -OperationStatusLink $importRequest.OperationStatusLink
[Console]::Write("Importing mydatabase")
while ($importStatus.Status -eq "InProgress")
{
    $importStatus = Get-AzSqlDatabaseImportExportStatus -OperationStatusLink $importRequest.OperationStatusLink
    [Console]::Write(".")
    Start-Sleep -s 10
}
[Console]::WriteLine("")
$importStatus

更新 1:

今天进行测试,我可以通过 Azure 门户 GUI 导入数据库,但 PowerShell 不起作用。我可以通过 PowerShell 下载 blob/bacpac 文件,但使用 New-AzSqlDatabaseImport 导入仍然失败。

在检查 Azure 门户 Activity 日志时显示以下错误,因此我们认为它正在与 Azure SQL 通信:

"subStatus": {
    "value": "InternalServerError",
    "localizedValue": "Internal Server Error (HTTP Status Code: 500)"
},

在与 Microsoft 交谈后,我需要调整最大字节数以匹配我尝试部署到的标准版最大 250GB。虽然较小的值在过去有效,但调整后有效。

我改变了这个:

-DatabaseMaxSizeBytes "262144000"

对此:

-DatabaseMaxSizeBytes "268435456000"

@科德。给我指明了正确的方向。有效数字是

Maximum Size    Maximum Size    Available 
(in bytes)      (in GB)         (edition)
104857600       0.1             Premium, Standard, Basic
524288000       0.5             Premium, Standard, Basic
1073741824      1               Premium, Standard, Basic
2147483648      2               Premium, Standard, Basic
5368709120      5               Premium, Standard
10737418240     10              Premium, Standard
21474836480     20              Premium, Standard
32212254720     30              Premium, Standard
42949672960     40              Premium, Standard
53687091200     50              Premium, Standard
107374182400    100             Premium, Standard
161061273600    150             Premium, Standard
214748364800    200             Premium, Standard
268435456000    250             Premium, Standard
322122547200    300             Premium
429496729600    400             Premium
536870912000    500             Premium