如何将 bacpac 文件从 Azure 存储恢复到 Azure SQL Server 作为数据库?

问题描述 投票:0回答:1

我在 Azure 存储中有一个

.bacpac
文件,并且希望将其恢复为 Azure SQL Server 上的数据库。
.bacpac
文件称为
testdb

我正在使用以下命令:

az sql db import --admin-password <sql_server_admin_password> --admin-user <sql_server_admin_username>
   --storage-key <storage_account_key> --storage-key-type StorageAccessKey 
   --storage-uri <bacpac_file_uri> --name 'newtestdb'
   --resource-group 'testrg' --server 'testserver'

问题是它说在资源组

servers/testserver/databases/newtestdb
下找不到
testrg

我认为它会在该服务器上的资源组下创建新数据库

testrg

如何将

.bacpac
文件恢复到资源组中的 SQL Server?

azure powershell azure-sql-database azure-cli
1个回答
0
投票

假设将 bacpac 上传到 Azure 存储帐户,您需要首先创建资源组,然后创建 Azure SQL 逻辑服务器,然后在该逻辑服务器上创建一个空的 Azure SQL 数据库,最后使用新名称导入数据库创建的数据库。下面是 AZ 命令的全功能脚本以及执行它们所需的顺序:

# Import a BACPAC file into a database in SQL Database

let "randomIdentifier=$RANDOM*$RANDOM"
location="East US"
resourceGroup="msdocs-azuresql-rg-$randomIdentifier"
tag="import-from-bacpac"
server="msdocs-azuresql-server-$randomIdentifier"
database="msdocsazuresqldb$randomIdentifier"
login="azureuser"
password="Pa$$w0rD-$randomIdentifier"
storage="msdocsazuresql$randomIdentifier"
container="msdocs-azuresql-container-$randomIdentifier"
bacpac="sample.bacpac"

echo "Using resource group $resourceGroup with login: $login, password: $password..."

echo "Creating $resourceGroup in $location..."
az group create --name $resourceGroup --location "$location" --tags $tag

echo "Creating $storage..."
az storage account create --name $storage --resource-group $resourceGroup --location "$location" --sku Standard_LRS

echo "Creating $container on $storage..."
key=$(az storage account keys list --account-name $storage --resource-group $resourceGroup -o json --query [0].value | tr -d '"')

az storage container create --name $container --account-key $key --account-name $storage #--public-access container

echo "Downloading sample database..."
az rest --uri https://github.com/Microsoft/sql-server-samples/releases/download/wide-world-importers-v1.0/WideWorldImporters-Standard.bacpac --output-file $bacpac -m get --skip-authorization-header

echo "Uploading sample database to $container..."
az storage blob upload --container-name $container --file $bacpac --name $bacpac --account-key $key --account-name $storage

echo "Creating $server in $location..."
az sql server create --name $server --resource-group $resourceGroup --location "$location" --admin-user $login --admin-password $password
az sql server firewall-rule create --resource-group $resourceGroup --server $server --name AllowAzureServices --start-ip-address 0.0.0.0 --end-ip-address 0.0.0.0

echo "Creating $database..."
az sql db create --name $database --resource-group $resourceGroup --server $server --edition "GeneralPurpose"

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
© www.soinside.com 2019 - 2024. All rights reserved.