Kurz: Import souborů SQL BACPAC pomocí šablon ARM
Zjistěte, jak pomocí rozšíření Azure SQL Database importovat soubor BACPAC pomocí šablon Azure Resource Manager (šablon ARM). Artefakty nasazení jsou všechny soubory kromě hlavních souborů šablony, které jsou potřeba k dokončení nasazení. Soubor BACPAC je artefakt.
V tomto kurzu vytvoříte šablonu pro nasazení logického SERVERU SQL a izolované databáze a importujete soubor BACPAC. Informace o tom, jak nasadit rozšíření virtuálních počítačů Azure pomocí šablon ARM, najdete v tématu Kurz: Nasazení rozšíření virtuálních počítačů pomocí šablon ARM.
Tento kurz se zabývá následujícími úkony:
- Připravte soubor BACPAC.
- Otevřete šablonu pro rychlý start.
- Upravte šablonu.
- Nasazení šablony
- Ověřte nasazení.
Pokud předplatné Azure ještě nemáte, napřed si vytvořte bezplatný účet.
Požadavky
K dokončení tohoto článku potřebujete:
Visual Studio Code s rozšířením Nástroje Resource Manageru Viz Rychlý start: Vytváření šablon ARM pomocí editoru Visual Studio Code.
Pokud chcete zvýšit zabezpečení, použijte vygenerované heslo pro účet správce serveru. Azure Cloud Shell můžete použít ke spuštění následujícího příkazu v PowerShellu nebo Bash:
openssl rand -base64 32
Další informace získáte spuštěním příkazu
man openssl rand
a otevřete stránku ručně.Služba Azure Key Vault je určená k ochraně kryptografických klíčů a dalších tajných klíčů. Další informace najdete v tématu Kurz: Integrace Azure Key Vault v nasazení šablony ARM. Zároveň doporučujeme heslo každé tři měsíce aktualizovat.
Příprava souboru BACPAC
Soubor BACPAC se sdílí na GitHubu. Pokud chcete vytvořit vlastní databázi, přečtěte si téma Export databáze z Azure SQL Database do souboru BACPAC. Pokud se rozhodnete soubor publikovat do vlastního umístění, v pozdější části kurzu budete muset šablonu aktualizovat.
Před importem pomocí šablony ARM musí být soubor BACPAC uložený v účtu služby Azure Storage. Následující skript PowerShellu připraví soubor BACPAC pomocí těchto kroků:
- Stáhněte si soubor BACPAC.
- Vytvořit účet služby Azure Storage
- Vytvořte kontejner objektů blob účtu úložiště.
- Nahrajte soubor BACPAC do kontejneru.
- Zobrazte klíč účtu úložiště, adresu URL objektu blob, název skupiny prostředků a umístění.
Výběrem možnosti Vyzkoušet otevřete Cloud Shell. Pak zkopírujte následující skript PowerShellu a vložte ho do okna prostředí.
$projectName = Read-Host -Prompt "Enter a project name that is used to generate Azure resource names" $location = Read-Host -Prompt "Enter the location (i.e. centralus)" $resourceGroupName = "${projectName}rg" $storageAccountName = "${projectName}store" $containerName = "bacpacfiles" $bacpacFileName = "SQLDatabaseExtension.bacpac" $bacpacUrl = "https://github.com/Azure/azure-docs-json-samples/raw/master/tutorial-sql-extension/SQLDatabaseExtension.bacpac" # Download the bacpac file Invoke-WebRequest -Uri $bacpacUrl -OutFile "$HOME/$bacpacFileName" # Create a resource group New-AzResourceGroup -Name $resourceGroupName -Location $location # Create a storage account $storageAccount = New-AzStorageAccount -ResourceGroupName $resourceGroupName ` -Name $storageAccountName ` -SkuName Standard_LRS ` -Location $location $storageAccountKey = (Get-AzStorageAccountKey -ResourceGroupName $resourceGroupName ` -Name $storageAccountName).Value[0] # Create a container New-AzStorageContainer -Name $containerName -Context $storageAccount.Context # Upload the BACPAC file to the container Set-AzStorageBlobContent -File $HOME/$bacpacFileName ` -Container $containerName ` -Blob $bacpacFileName ` -Context $storageAccount.Context Write-Host "The project name: $projectName ` The location: $location ` The storage account key: $storageAccountKey ` The BACPAC file URL: https://$storageAccountName.blob.core.windows.net/$containerName/$bacpacFileName ` " Write-Host "Press [ENTER] to continue ..."
Uložte klíč účtu úložiště, adresu URL souboru BACPAC, název projektu a umístění. Tyto hodnoty použijete při nasazování šablony později v tomto kurzu.
Otevření šablony rychlého startu
Šablona použitá v tomto kurzu je uložená v GitHubu.
V editoru Visual Studio Code vyberte Soubor>Otevřít soubor.
Do pole File name (Název souboru) vložte následující adresu URL:
https://raw.githubusercontent.com/Azure/azure-docs-json-samples/master/tutorial-sql-extension/azuredeploy.json
Výběrem Open (Otevřít) soubor otevřete.
V šabloně jsou definované dva prostředky:
Microsoft.Sql/servers
. Viz referenční informace k šablonám.Microsoft.SQL.servers/databases
. Viz referenční informace k šablonám.Než šablonu přizpůsobíte, je užitečné se seznámit se základními informacemi.
Vyberte Soubor>Uložit jako a uložte kopii souboru do místního počítače s názvem azuredeploy.json.
Úprava šablony
Na konec oddílu
parameters
přidejte dva parametry pro nastavení klíče účtu úložiště a adresy URL souboru BACPAC."storageAccountKey": { "type":"string", "metadata":{ "description": "Specifies the key of the storage account where the BACPAC file is stored." } }, "bacpacUrl": { "type":"string", "metadata":{ "description": "Specifies the URL of the BACPAC file." } }
Za pravou složenou závorku () vlastnosti přidejte čárku
adminPassword
.}
Pokud chcete soubor JSON naformátovat z editoru Visual Studio Code, vyberte Shift+Alt+F.Přidejte do šablony dva prostředky.
Pokud chcete rozšíření SQL Database povolit import souborů BACPAC, musíte povolit provoz ze služeb Azure. Po nasazení SQL Serveru pravidlo brány firewall zapne nastavení Povolit službám a prostředkům Azure přístup k tomuto serveru.
Do definice serveru přidejte následující pravidlo brány firewall:
"resources": [ { "type": "firewallrules", "apiVersion": "2021-02-01-preview", "name": "AllowAllAzureIps", "location": "[parameters('location')]", "dependsOn": [ "[parameters('databaseServerName')]" ], "properties": { "startIpAddress": "0.0.0.0", "endIpAddress": "0.0.0.0" } } ]
Následující příklad ukazuje aktualizovanou šablonu:
Pomocí následujícího kódu JSON přidejte k definici databáze prostředek rozšíření služby SQL Database:
"resources": [ { "type": "extensions", "apiVersion": "2014-04-01", "name": "Import", "dependsOn": [ "[resourceId('Microsoft.Sql/servers/databases', parameters('databaseServerName'), parameters('databaseName'))]" ], "properties": { "storageKeyType": "StorageAccessKey", "storageKey": "[parameters('storageAccountKey')]", "storageUri": "[parameters('bacpacUrl')]", "administratorLogin": "[parameters('adminUser')]", "administratorLoginPassword": "[parameters('adminPassword')]", "operationMode": "Import" } } ]
Následující příklad ukazuje aktualizovanou šablonu:
Vysvětlení definice prostředku najdete v referenčních informacích k SQL Database rozšíření verze rozhraní API. Tady je několik důležitých elementů:
-
dependsOn
: Prostředek rozšíření se musí vytvořit po vytvoření databáze. -
storageKeyType
: Zadejte typ klíče úložiště, který chcete použít. Hodnota může býtStorageAccessKey
neboSharedAccessKey
. PoužijteStorageAccessKey
v tomto kurzu. -
storageKey
: Zadejte klíč pro účet úložiště, ve kterém je soubor BACPAC uložený. Pokud jeSharedAccessKey
typ klíče úložiště , musí mu předcházet znak "?". -
storageUri
: Zadejte adresu URL souboru BACPAC uloženého v účtu úložiště. -
administratorLogin
: Název účtu správce SQL. -
administratorLoginPassword
: Heslo správce SQL. Pokud chcete použít vygenerované heslo, přečtěte si téma Požadavky.
-
Následující příklad ukazuje dokončenou šablonu:
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"databaseServerName": {
"type": "string",
"defaultValue": "[concat('server-', uniqueString(resourceGroup().id, deployment().name))]",
"metadata": {
"description": "Specifies the name for the SQL server"
}
},
"databaseName": {
"type": "string",
"defaultValue": "[concat('db-', uniqueString(resourceGroup().id, deployment().name), '-1')]",
"metadata": {
"description": "Specifies the name for the SQL database under the SQL server"
}
},
"location": {
"type": "string",
"defaultValue": "[resourceGroup().location]",
"metadata": {
"description": "Specifies the location for server and database"
}
},
"adminUser": {
"type": "string",
"metadata": {
"description": "Specifies the username for admin"
}
},
"adminPassword": {
"type": "securestring",
"metadata": {
"description": "Specifies the password for admin"
}
},
"storageAccountKey": {
"type": "string",
"metadata": {
"description": "Specifies the key of the storage account where the BACPAC file is stored."
}
},
"bacpacUrl": {
"type": "string",
"metadata": {
"description": "Specifies the URL of the BACPAC file."
}
}
},
"resources": [
{
"type": "Microsoft.Sql/servers",
"apiVersion": "2021-02-01-preview",
"name": "[parameters('databaseServerName')]",
"location": "[parameters('location')]",
"properties": {
"administratorLogin": "[parameters('adminUser')]",
"administratorLoginPassword": "[parameters('adminPassword')]",
"version": "12.0"
},
"resources": [
{
"type": "firewallrules",
"apiVersion": "2021-02-01-preview",
"name": "AllowAllAzureIps",
"location": "[parameters('location')]",
"dependsOn": [
"[parameters('databaseServerName')]"
],
"properties": {
"startIpAddress": "0.0.0.0",
"endIpAddress": "0.0.0.0"
}
}
]
},
{
"type": "Microsoft.Sql/servers/databases",
"apiVersion": "2021-02-01-preview",
"name": "[concat(string(parameters('databaseServerName')), '/', string(parameters('databaseName')))]",
"location": "[parameters('location')]",
"dependsOn": [
"[concat('Microsoft.Sql/servers/', parameters('databaseServerName'))]"
],
"resources": [
{
"type": "extensions",
"apiVersion": "2014-04-01",
"name": "Import",
"dependsOn": [
"[resourceId('Microsoft.Sql/servers/databases', parameters('databaseServerName'), parameters('databaseName'))]"
],
"properties": {
"storageKeyType": "StorageAccessKey",
"storageKey": "[parameters('storageAccountKey')]",
"storageUri": "[parameters('bacpacUrl')]",
"administratorLogin": "[parameters('adminUser')]",
"administratorLoginPassword": "[parameters('adminPassword')]",
"operationMode": "Import"
}
}
]
}
]
}
Nasazení šablony
Použijte název a umístění projektu, které jste použili při přípravě souboru BACPAC. Tím se všechny prostředky umístí do stejné skupiny prostředků, což je užitečné, když prostředky odstraníte.
Přihlaste se a Cloud Shell.
V levém horním rohu vyberte PowerShell .
Vyberte Nahrát nebo stáhnout soubory a nahrajte soubor azuredeploy.json .
Pokud chcete šablonu nasadit, zkopírujte následující skript a vložte ho do okna prostředí.
$projectName = Read-Host -Prompt "Enter the same project name that is used earlier" $adminUsername = Read-Host -Prompt "Enter the SQL admin username" $adminPassword = Read-Host -Prompt "Enter the admin password" -AsSecureString $storageAccountKey = Read-Host -Prompt "Enter the storage account key" $bacpacUrl = Read-Host -Prompt "Enter the URL of the BACPAC file" $resourceGroupName = "${projectName}rg" New-AzResourceGroupDeployment ` -ResourceGroupName $resourceGroupName ` -adminUser $adminUsername ` -adminPassword $adminPassword ` -TemplateFile "$HOME/azuredeploy.json" ` -storageAccountKey $storageAccountKey ` -bacpacUrl $bacpacUrl Write-Host "Press [ENTER] to continue ..."
Ověření nasazení
Pokud chcete získat přístup k serveru z klientského počítače, musíte přidat pravidlo brány firewall. IP adresa vašeho klienta a IP adresa, která se používá pro připojení k serveru, se můžou lišit kvůli překladu adres (NAT). Další informace najdete v části Vytváření a správa pravidel firewallu protokolu IP.
Když se například přihlásíte k Editoru dotazů , zobrazí se zpráva, že IP adresa není povolená. Adresa se liší od IP adresy vašeho klienta kvůli překladu adres (NAT). Vyberte odkaz zprávy a přidejte pravidlo brány firewall pro IP adresu. Po dokončení můžete IP adresu odstranit z nastavení bran firewall a virtuálních sítí serveru.
V Azure Portal vyberte ze skupiny prostředků databázi. Vyberte Editor dotazů (Preview) a zadejte přihlašovací údaje správce. Uvidíte, že se do databáze naimportovaly dvě tabulky.
Vyčištění prostředků
Pokud už nasazené prostředky Azure nepotřebujete, odstraňte skupinu prostředků. Skupina prostředků, účet úložiště, SQL Server a databáze SQL se odstraní.
- Do vyhledávacího pole Azure Portal zadejte Skupiny prostředků.
- Do pole Filtrovat podle názvu zadejte název skupiny prostředků.
- Vyberte název skupiny prostředků.
- Vyberte Odstranit skupinu prostředků.
- Potvrďte odstranění zadáním názvu skupiny prostředků a vyberte Odstranit.
Další kroky
V tomto kurzu jste nasadili server a databázi a importovali jste soubor BACPAC. Informace o řešení potíží s nasazením šablon najdete tady: