Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Van toepassing op:Azure SQL Database
In dit Voorbeeld van een Azure PowerShell-script wordt een database uit een BACPAC-bestand geïmporteerd in een nieuwe database in SQL Database.
Als u geen Azure-abonnement hebt, kunt u een gratis Azure-account maken voordat u begint.
Opmerking
In dit artikel wordt de Azure Az PowerShell-module gebruikt. Dit is de aanbevolen PowerShell-module voor interactie met Azure. Zie Azure PowerShell-installeren om aan de slag te gaan met de Az PowerShell-module. Om te leren hoe u naar de Az PowerShell-module kunt migreren, zie Migrate Azure PowerShell from AzureRM to Az.
Azure Cloud Shell gebruiken
Azure host Azure Cloud Shell, een interactieve shell-omgeving die u via uw browser kunt gebruiken. U kunt Bash of PowerShell met Cloud Shell gebruiken om te werken met Azure-services. U kunt de vooraf geïnstalleerde Cloud Shell-opdrachten gebruiken om de code in dit artikel uit te voeren zonder dat u iets hoeft te installeren in uw lokale omgeving.
Om Azure Cloud Shell op te starten:
| Optie | Voorbeeld/koppeling |
|---|---|
| Selecteer Nu proberen in de rechterbovenhoek van een codeblok. Als u Try It selecteert, wordt de code niet automatisch gekopieerd naar Cloud Shell. |
|
| Ga naar https://shell.azure.com, of selecteer de knop Cloud Shell starten om Cloud Shell in uw browser te openen. |
|
| Klik op de knop Cloud Shell in het menu in de balk rechtsboven in de Azure-portal. |
|
Om de code in dit artikel in Azure Cloud Shell uit te voeren:
Start Cloud Shell.
Selecteer de knop Kopiëren op een codeblok om de code te kopiëren.
Plak de code in de Cloud Shell-sessie door Ctrl+Shift+V- in Windows en Linux te selecteren of door Cmd+Shift+V- in macOS te selecteren.
Selecteer Voer in om de code uit te voeren.
Als u PowerShell lokaal wilt installeren en gebruiken, is voor deze zelfstudie Az PowerShell 1.4.0 of hoger vereist. Zie Azure PowerShell-module installerenals u een upgrade wilt uitvoeren. Als u PowerShell lokaal uitvoert, moet u ook Connect-AzAccount uitvoeren om een verbinding met Azure te maken.
Voorbeeldscript
# Connect-AzAccount
# The SubscriptionId in which to create these objects
$subscriptionId = "<Subscription-ID>"
# Set the resource group name and location for your server
$resourceGroupName = "myResourceGroup-$(Get-Random)"
$location = "westeurope"
# Set an admin login and password for your server
$adminSqlLogin = "<admin>"
$password = "<password>"
# Set server name - the logical server name has to be unique in the system
$serverName = "server-$(Get-Random)"
# The sample database name
$databaseName = "myImportedDatabase"
# The storage account name and storage container name
$storageAccountName = "sqlimport$(Get-Random)"
$storageContainerName = "importcontainer$(Get-Random)"
# BACPAC file name
$bacpacFilename = "sample.bacpac"
# The IP address range that you want to allow to access your server
$startIp = "0.0.0.0"
$endIp = "0.0.0.0"
# Set subscription
Set-AzContext -SubscriptionId $subscriptionId
# Create a resource group
$resourceGroup = New-AzResourceGroup -Name $resourceGroupName -Location $location
# Create a storage account
$storageAccountParams = @{
ResourceGroupName = $resourceGroupName
Name = $storageAccountName
Location = $location
SkuName = "Standard_LRS"
}
$storageAccount = New-AzStorageAccount @storageAccountParams
# Create a storage context for the storage account
$storageAccountKey = (Get-AzStorageAccountKey -ResourceGroupName $resourceGroupName -Name $storageAccountName).Value[0]
$storageContext = New-AzStorageContext -StorageAccountName $storageAccountName -StorageAccountKey $storageAccountKey
# Create a storage container
$storageContainer = New-AzStorageContainer -Name $storageContainerName -Context $storageContext
# Download sample database from GitHub
[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12 #required by GitHub
Invoke-WebRequest -Uri "https://github.com/Microsoft/sql-server-samples/releases/download/wide-world-importers-v1.0/WideWorldImporters-Standard.bacpac" -OutFile $bacpacFilename
# Upload sample database into storage container
$blobContentParams = @{
Container = $storageContainerName
File = $bacpacFilename
Context = $storageContext
}
Set-AzStorageBlobContent @blobContentParams
# Create a credential for the server admin
$adminCredential = New-Object -TypeName System.Management.Automation.PSCredential -ArgumentList $adminSqlLogin, $(ConvertTo-SecureString -String $password -AsPlainText -Force)
# Create a new server with a system-wide unique server name
$serverParams = @{
ResourceGroupName = $resourceGroupName
ServerName = $serverName
Location = $location
SqlAdministratorCredentials = $adminCredential
}
$server = New-AzSqlServer @serverParams
# Create a server firewall rule that allows access from the specified IP range
$firewallParams = @{
ResourceGroupName = $resourceGroupName
ServerName = $serverName
FirewallRuleName = "AllowedIPs"
StartIpAddress = $startIp
EndIpAddress = $endIp
}
$serverFirewallRule = New-AzSqlServerFirewallRule @firewallParams
# Import BACPAC to database with an S3 performance level
$importParams = @{
ResourceGroupName = $resourceGroupName
ServerName = $serverName
DatabaseName = $databaseName
DatabaseMaxSizeBytes = 100GB
StorageKeyType = "StorageAccessKey"
StorageKey = (Get-AzStorageAccountKey -ResourceGroupName $resourceGroupName -StorageAccountName $storageAccountName).Value[0]
StorageUri = "https://$storageAccountName.blob.core.windows.net/$storageContainerName/$bacpacFilename"
Edition = "Standard"
ServiceObjectiveName = "S3"
AdministratorLogin = "$adminSqlLogin"
AdministratorLoginPassword = $(ConvertTo-SecureString -String $password -AsPlainText -Force)
}
$importRequest = New-AzSqlDatabaseImport @importParams
# Check import status and wait for the import to complete
$importStatus = Get-AzSqlDatabaseImportExportStatus -OperationStatusLink $importRequest.OperationStatusLink
[Console]::Write("Importing")
while ($importStatus.Status -eq "InProgress") {
$importStatus = Get-AzSqlDatabaseImportExportStatus -OperationStatusLink $importRequest.OperationStatusLink
[Console]::Write(".")
Start-Sleep -s 10
}
[Console]::WriteLine("")
$importStatus
# Scale down to S0 after import is complete
$scaleDownParams = @{
ResourceGroupName = $resourceGroupName
ServerName = $serverName
DatabaseName = $databaseName
Edition = "Standard"
RequestedServiceObjectiveName = "S0"
}
Set-AzSqlDatabase @scaleDownParams
# Clean up deployment
# Remove-AzResourceGroup -ResourceGroupName $resourceGroupName
Opschoning van de implementatie
Gebruik de volgende opdracht om de resourcegroep en alle bijbehorende resources te verwijderen.
Remove-AzResourceGroup -ResourceGroupName $resourcegroupname
Uitleg van script
Dit script gebruikt de volgende commando's. Elke opdracht in de tabel linkt naar documentatie die specifiek is voor die opdracht.
| Opdracht | Opmerkingen |
|---|---|
| New-AzResourceGroup | Hiermee maakt u een resourcegroep waarin alle resources worden opgeslagen. |
| New-AzSqlServer | Hiermee maakt u een server die als host fungeert voor databases en elastische pools. |
| New-AzSqlServerFirewallRule | Hiermee maakt u een firewallregel op serverniveau voor een server. |
| New-AzSqlDatabaseImport | Hiermee importeert u een BACPAC-bestand en maakt u een nieuwe database op de server. |
| Remove-AzResourceGroup | Verwijdert een resourcegroep, inclusief alle onderliggende resources. |