使用New-AzSqlDatabaseImport导入Azure SQL数据库未完成,疑参数异常?
Azure SQL数据库PowerShell导入失败排查(含DatabaseMaxSizeBytes参数疑问)
尝试通过PowerShell导入仅含1张表的Azure SQL数据库,但导入始终无法完成,需排查问题,尤其确认-DatabaseMaxSizeBytes参数取值是否正确。
执行的PowerShell脚本
$importstatus = New-AzSqlDatabaseImport -ResourceGroupName $ResourceGroupName -ServerName $ServerName ` -DatabaseName $DatabaseName -StorageKeytype $StorageKeytype -StorageKey $StorageKey -StorageUri $BacpacUri ` -AdministratorLogin $creds.UserName -AdministratorLoginPassword $creds.Password ` -Edition GeneralPurpose -ServiceObjectiveName GP_Gen5_2 -DatabaseMaxSizeBytes 1099511627776 #1073741824000 # check status $importstatus = get-azsqldatabaseimportexportstatus -operationstatuslink $importrequest.operationstatuslink [console]::write("importing") while ($importstatus.status -eq "inprogress") { start-sleep -s 10 $importstatus = get-azsqldatabaseimportexportstatus -operationstatuslink $importrequest.operationstatuslink [console]::write(".") } [console]::writeline("") $importstatus
执行结果
Get-AzSqlDatabaseImportExportStatus : Cannot bind argument to parameter 'OperationStatusLink' because it is null. At C:\Azure\QA_Prod_Copy\Import_sql.ps1:27 char:74 + ... texportstatus -operationstatuslink $importrequest.operationstatuslink + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : InvalidData: (:) [Get-AzSqlDatabaseImportExportStatus], ParameterBindingValidationException + FullyQualifiedErrorId : ParameterArgumentValidationErrorNullNotAllowed,Microsoft.Azure.Commands.Sql.ImportExport.Cmdlet.GetAzureSqlDatabaseImportExportStatus importing
Azure门户显示
Azure SQL -> 活动日志 -> 将数据库导入服务器(已接受并启动)
问题排查与修复
一、脚本直接错误:变量名不匹配
脚本中New-AzSqlDatabaseImport的返回结果赋值给了$importstatus,但后续检查状态时调用了未定义的$importrequest.operationstatuslink,导致参数为空触发报错。
修复方法:将所有$importrequest替换为$importstatus,修改后的状态检查代码:
# check status $importstatus = Get-AzSqlDatabaseImportExportStatus -OperationStatusLink $importstatus.OperationStatusLink [console]::write("importing") while ($importstatus.Status -eq "InProgress") { Start-Sleep -s 10 $importstatus = Get-AzSqlDatabaseImportExportStatus -OperationStatusLink $importstatus.OperationStatusLink [console]::write(".") } [console]::writeline("") $importstatus
二、DatabaseMaxSizeBytes参数验证
你设置的1099511627776等于1TB(1024^4),对于GeneralPurpose层级的GP_Gen5_2实例来说,该取值完全合法——GeneralPurpose层级数据库最大支持4TB,所以这个参数值没问题。
如果BACPAC文件远小于1TB,也可以设置更小的合理值(比如100GB即107374182400),但只要不超过实例层级上限,较大的取值不会导致导入失败。
三、其他可能的导入失败原因
- 存储权限问题:确认存储账户访问密钥(
$StorageKey)有效,且存储容器允许Azure SQL服务器访问(检查存储账户防火墙/网络规则,是否开启"允许Azure服务访问")。 - BACPAC文件损坏:下载BACPAC到本地,用SQL Server Management Studio(SSMS)导入到本地数据库,验证文件完整性。
- SQL服务器资源不足:GP_Gen5_2是2vCore实例,若导入过程中资源占用过高,可暂时升级实例规格后重试。
- 登录权限问题:确认
$creds.UserName是目标SQL服务器的服务器管理员账号,具备创建数据库的足够权限。
内容的提问来源于stack exchange,提问作者Kenny_I
相关产品推荐
相关产品推荐

