将 blob (.bacpac) 转换为 .bacpac 文件以将数据库导入到 SQL Server Azure?

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

在 Azure 中使用 MVC/C# 时,我需要从存储在 blob 存储中的 .bacpac 文件恢复数据库。我正在使用 DAC Framework API 从 Blob 存储访问 .bacpac。

问题:

DacServices.ImportBacpac
需要.bacpac文件,我可以引用blob文件(这是.bacpac),但它作为blob而不是.bacpac文件出现。我不知道如何将 blob 转换为 .bacpac。您能指导我一些方法或 API 来进行转换吗? 稍后我将使用此文件将 backpac 导入到 SQL Server Azure。

感谢您的时间和帮助。

c# .net azure azure-sql-database bacpac
2个回答
4
投票

最好的方法可能是将 blob 作为流读取 (CloudBlob.DownloadToStream()) 并从所述流创建 bacpac (BacPackage.Load())。


0
投票

大约10年后:

在 2024 年,我建议使用 Azure CLI 和此页面上的脚本:https://learn.microsoft.com/en-us/azure/azure-sql/database/scripts/import-from-bacpac- cli?view=azuresql

主要思想是使用“az sql db import”命令。该脚本执行了许多其他具有指导意义的操作,例如从 git 存储库获取 .bacpac 文件、将其上传到 blob、创建 Azure SQL Server 等。您可以根据需要注释掉这些行。

我将此脚本保存为 bash 脚本(带有 .sh 扩展名)并在 Windows 11 上运行它。

# Import a BACPAC file into a database in SQL Database
# Variable block
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.