You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.19 19:45:33