执行az sql db import报错,如何将Azure存储的bacpac还原至Azure SQL Server?
解决Azure SQL数据库从Bacpac导入失败的问题
报错原因分析
你遇到的"数据库不存在"报错,大概率是命令参数解析问题、基础资源未确认,或是存储访问权限/URL配置错误导致的——az sql db import命令本身确实会自动创建目标数据库,无需提前手动创建。
解决步骤
确认基础资源存在
先验证目标资源组和SQL Server是否真实存在,执行以下命令:az sql server show --resource-group testrg --name testserver如果命令返回SQL Server的详细信息,说明资源存在;如果报错,需先创建对应的资源组和SQL Server。
修正导入命令的参数细节
调整命令的参数格式,避免shell解析问题,同时确保所有参数值正确:az sql db import --admin-password 你的SQL管理员密码 --admin-user 你的SQL管理员账号 \ --storage-key 你的存储账户密钥 --storage-key-type StorageAccessKey \ --storage-uri https://你的存储账户名.blob.core.windows.net/容器名/testdb.bacpac \ --name newtestdb --resource-group testrg --server testserver- 注意:不要保留尖括号
<>,直接替换为实际值;字符串参数无需额外加单引号,避免shell解析异常。 storage-uri必须是bacpac文件的完整可访问URL,确保路径和文件名完全匹配。
- 注意:不要保留尖括号
验证存储访问权限
- 确保使用的存储账户密钥拥有读取对应blob容器的权限;
- 可通过以下命令测试能否读取bacpac文件:
az storage blob download --account-name 你的存储账户名 --container-name 容器名 --name testdb.bacpac --file local-test.bacpac --account-key 你的存储账户密钥
如果能成功下载,说明存储配置无问题。
检查执行账号权限
执行命令的Azure账号需要具备:- 目标资源组的
SQL DB Contributor或更高权限; - 存储账户的
Storage Blob Data Reader权限。
- 目标资源组的
查看导入作业状态
az sql db import是异步操作,执行后可通过以下命令跟踪导入进度:az sql db import show --resource-group testrg --server testserver --name newtestdb
内容的提问来源于stack exchange,提问作者Sally
相关产品推荐
相关产品推荐

