我正在使用 az cli 导入数据库,但出现错误: 我已手动将数据库复制到azure存储帐户
Here is the import script:
echo "Creating $database..."
echo "Importing sample database from $container to $database..."
az sql db import --admin-password $password --admin-user $login --storage-key $key --
storage-key-type StorageAccessKey --storage-uri
https://$storage.blob.core.windows.net/$container/$bacpac --name $database --resource-
group $resourceGroup --server $server
我导入的数据库大约有230Gig
我可以看到它尝试导入为“通用 - 无服务器:标准系列(Gen5),1 vCore”,而工作数据库应该是“标准 S9:1600 DTU”
我可以在导入中设置该值吗?
错误如下:
'The operation failed because the database reached its size quota, SQL Error 40544. Please retry with sufficient storage allocated to complete the operation.'.'
您遇到的错误表明数据库在导入过程中达到了其大小配额。这是因为目标数据库服务层和性能级别(在本例中为通用 - 无服务器:标准系列 Gen5,1 个 vCore)无法提供足够的资源来处理大约 230GB 的数据库。
要解决此问题,您需要指定符合或超出数据库大小和工作负载要求的适当服务层级和性能级别。对于您的情况,您提到工作数据库使用“标准 S9:1600 DTU”。您应该在导入操作期间将目标数据库设置为此层和性能级别。
不幸的是,
az sql db import
命令不允许您直接指定服务层和性能级别(DTU 或 vCore)。相反,您必须首先创建具有所需配置的数据库,然后将 .bacpac 文件导入到此预配置的数据库中。
以下是相同的示例 - 您需要首先使用
az sql db create
命令创建具有必要服务层的数据库。为 DTU 或 vCore 指定 --service-objective
参数。
如果您已经有,只需更新如下-
az sql db update --name $env:database --resource-group $env:resourceGroup --server $env:server --service-objective S9
使用正确的规格创建数据库后,您可以继续导入 .bacpac 文件。
az sql db import --admin-password $env:password \
--admin-user $env:login \
--storage-key $env:key \
--storage-key-type StorageAccessKey \
--storage-uri https://$env:storage.blob.core.windows.net/$env:container/$env:bacpac \
--name $env:database \
--resource-group $env:resourceGroup \
--server $env:server
您可以在 Azure 门户中的 SQL 数据库的“导入/导出历史记录”下监控导入操作的状态。