Een SQL Server-database migreren naar Azure SQL Database met behulp van Azure PowerShell
In dit artikel migreert u de database Adventureworks2012 die is hersteld naar een on-premises exemplaar van SQL Server 2016 of hoger naar Azure SQL Database met behulp van Microsoft Azure PowerShell. U kunt databases migreren van een SQL Server-exemplaar naar Azure SQL Database met behulp van de Az.DataMigration
module in Microsoft Azure PowerShell.
In dit artikel leert u het volgende:
- Maak een resourcegroep.
- De Azure-portal gebruiken om een Azure Database Migration Service-exemplaar te maken.
- Maak een migratieproject in een Azure Database Migration Service-exemplaar.
- De migratie uitvoeren.
Vereisten
U hebt het volgende nodig om deze stappen te voltooien:
- SQL Server 2016 of hoger (elke editie)
- Het TCP/IP-protocol inschakelen, dat standaard is uitgeschakeld met SQL Server Express installatie. Schakel het TCP/IP-protocol in door het artikel Een servernetwerkprotocol in- of uitschakelen te volgen.
- Uw Windows Firewall configureren voor toegang tot de database-engine.
- Een Azure SQL Database-exemplaar. U kunt een Azure SQL Database-exemplaar maken door de details te volgen in het artikel Een database maken in Azure SQL Database in de Azure Portal.
- Data Migration Assistant versie 3.3 of hoger.
- Een Microsoft Azure-Virtual Network maken met behulp van het Azure Resource Manager-implementatiemodel, dat de Azure Database Migration Service site-naar-site-connectiviteit met uw on-premises bronservers biedt met behulp van ExpressRoute of VPN.
- Om de evaluatie van uw on-premises database- en schemamigratie te hebben voltooid met behulp van Data Migration Assistant zoals beschreven in het artikel Een SQL Server-migratieevaluatie uitvoeren
- Als u de module Az.DataMigration wilt downloaden en installeren vanaf de PowerShell Gallery met behulp van de PowerShell-cmdlet Install-Module, moet u het PowerShell-opdrachtvenster openen met uitvoeren als administrator.
- Om ervoor te zorgen dat de referenties die worden gebruikt om verbinding te maken met de bron SQL Server exemplaar de machtiging CONTROL SERVER hebben.
- Om ervoor te zorgen dat de referenties die worden gebruikt om verbinding te maken met de doel-Azure SQL DB-exemplaar de machtiging CONTROL DATABASE hebben voor de doeldatabases Azure SQL database.
- Een Azure-abonnement. Als u nog geen account hebt, maakt u een gratis account voordat u begint.
Meld u aan bij uw Microsoft Azure-abonnement
Gebruik de instructies in het artikel Aanmelden met Azure PowerShell om u aan te melden bij uw Azure-abonnement met behulp van PowerShell.
Een resourcegroep maken
Een Azure-resourcegroep is een logische container waarin Azure-resources worden geïmplementeerd en beheerd. Maak een resourcegroep voordat u een virtuele machine kunt maken.
Maak een resourcegroep met behulp van de opdracht New-AzResourceGroup .
In het volgende voorbeeld wordt een resourcegroep met de naam myResourceGroup gemaakt in de regio VS - oost .
New-AzResourceGroup -ResourceGroupName myResourceGroup -Location EastUS
Een exemplaar maken van Azure Database Migration Service
U kunt een nieuw exemplaar van Azure Database Migration Service maken met behulp van de New-AzDataMigrationService
cmdlet.
Deze cmdlet verwacht de volgende vereiste parameters:
- Naam van Azure-resourcegroep. U kunt de opdracht New-AzResourceGroup gebruiken om een Azure-resourcegroep te maken zoals eerder is weergegeven en de naam ervan op te geven als parameter.
- Servicenaam. Tekenreeks die overeenkomt met de gewenste unieke servicenaam voor Azure Database Migration Service
- Locatie. Hiermee geeft u de locatie van de service op. Een Azure-datacenterlocatie opgeven, zoals VS - west of Azië - zuidoost
- SKU. Deze parameter komt overeen met de naam van de DMS-SKU. De momenteel ondersteunde SKU-naam is GeneralPurpose_4vCores.
- Virtuele subnet-id. U kunt de cmdlet New-AzVirtualNetworkSubnetConfig gebruiken om een subnet te maken.
In het volgende voorbeeld wordt een service met de naam MyDMS gemaakt in de resourcegroep MyDMSResourceGroup in de regio VS - oost met behulp van een virtueel netwerk met de naam MyVNET en het subnet MySubnet.
$vNet = Get-AzVirtualNetwork -ResourceGroupName MyDMSResourceGroup -Name MyVNET
$vSubNet = Get-AzVirtualNetworkSubnetConfig -VirtualNetwork $vNet -Name MySubnet
$service = New-AzDms -ResourceGroupName MyDMSResourceGroup `
-ServiceName MyDMS `
-Location EastUS `
-Sku GeneralPurpose_4vCores `
-VirtualSubnetId $vSubNet.Id`
Een migratieproject maken
Nadat u een Azure Database Migration Service-exemplaar hebt gemaakt, maakt u een migratieproject. Een Azure Database Migration Service-project vereist verbindingsgegevens voor zowel de bron- als doelexemplaren, evenals een lijst met databases die u wilt migreren als onderdeel van het project.
Een databaseverbindingsgegevensobject maken voor de bron- en doelverbindingen
U kunt een databaseverbindingsgegevensobject maken met behulp van de New-AzDmsConnInfo
cmdlet. Deze cmdlet verwacht de volgende parameters:
- ServerType. Het aangevraagde type databaseverbinding, bijvoorbeeld SQL, Oracle of MySQL. Gebruik SQL voor SQL Server en Azure SQL.
- DataSource. De naam of het IP-adres van een SQL Server-exemplaar of Azure SQL Database.
- AuthType. Het verificatietype voor de verbinding, dat kan SqlAuthentication of WindowsAuthentication zijn.
- Met de parameter TrustServerCertificate wordt een waarde ingesteld die aangeeft of het kanaal is versleuteld tijdens het omzeilen van de certificaatketen om vertrouwen te valideren. De waarde kan waar of onwaar zijn.
In het volgende voorbeeld wordt het object Verbindingsgegevens gemaakt voor SQL Server met de naam MySourceSQLServer met behulp van SQL-verificatie:
$sourceConnInfo = New-AzDmsConnInfo -ServerType SQL `
-DataSource MySourceSQLServer `
-AuthType SqlAuthentication `
-TrustServerCertificate:$true
Notitie
Als de migratie eindigt met een fout bij het opgeven van de brongegevensbron als openbaar IP-adres of de DNS van SQL Server, gebruikt u de naam van de Azure-VM waarop de SQL Server wordt uitgevoerd.
In het volgende voorbeeld ziet u het maken van verbindingsgegevens voor een server met de naam SQLAzureTarget met behulp van SQL-verificatie:
$targetConnInfo = New-AzDmsConnInfo -ServerType SQL `
-DataSource "sqlazuretarget.database.windows.net" `
-AuthType SqlAuthentication `
-TrustServerCertificate:$false
Databases opgeven voor het migratieproject
Maak een lijst met AzDataMigrationDatabaseInfo
objecten die databases specificeert als onderdeel van het Azure Database Migration-project dat kan worden opgegeven als parameter voor het maken van het project. De cmdlet New-AzDataMigrationDatabaseInfo
kan worden gebruikt om AzDataMigrationDatabaseInfo te maken.
In het volgende voorbeeld wordt een project gemaakt AzDataMigrationDatabaseInfo
voor de database AdventureWorks2016 en wordt dit toegevoegd aan de lijst die moet worden opgegeven als parameter voor het maken van een project.
$dbInfo1 = New-AzDataMigrationDatabaseInfo -SourceDatabaseName AdventureWorks2016
$dbList = @($dbInfo1)
Een projectobject maken
Ten slotte kunt u een Azure Database Migration-project maken met de naam MyDMSProject in VS - oost met behulp van New-AzDataMigrationProject
en het toevoegen van de eerder gemaakte bron- en doelverbindingen en de lijst met databases die moeten worden gemigreerd.
$project = New-AzDataMigrationProject -ResourceGroupName myResourceGroup `
-ServiceName $service.Name `
-ProjectName MyDMSProject `
-Location EastUS `
-SourceType SQL `
-TargetType SQLDB `
-SourceConnection $sourceConnInfo `
-TargetConnection $targetConnInfo `
-DatabaseInfo $dbList
Een migratietaak maken en starten
Maak ten slotte de Azure Database Migration-taak en start deze. Voor de Azure Database Migration-taak zijn verbindingsreferentiegegevens vereist voor zowel bron- als doel- en lijst met databasetabellen die moeten worden gemigreerd, naast de informatie die al is opgegeven bij het gemaakte project als vereiste.
Referentieparameters maken voor bron en doel
Verbindingsbeveiligingsreferenties kunnen worden gemaakt als een PSCredential-object .
In het volgende voorbeeld ziet u het maken van PSCredential-objecten voor zowel bron- als doelverbindingen die wachtwoorden als tekenreeksvariabelen $sourcePassword en $targetPassword.
$secpasswd = ConvertTo-SecureString -String $sourcePassword -AsPlainText -Force
$sourceCred = New-Object System.Management.Automation.PSCredential ($sourceUserName, $secpasswd)
$secpasswd = ConvertTo-SecureString -String $targetPassword -AsPlainText -Force
$targetCred = New-Object System.Management.Automation.PSCredential ($targetUserName, $secpasswd)
Een tabeltoewijzing maken en bron- en doelparameters voor migratie selecteren
Een andere parameter die nodig is voor migratie, is het toewijzen van tabellen van bron naar doel die moeten worden gemigreerd. Maak een woordenlijst met tabellen die een toewijzing biedt tussen bron- en doeltabellen voor migratie. In het volgende voorbeeld ziet u de toewijzing tussen bron- en doeltabellen Human Resources-schema voor de Database AdventureWorks 2016.
$tableMap = New-Object 'system.collections.generic.dictionary[string,string]'
$tableMap.Add("HumanResources.Department", "HumanResources.Department")
$tableMap.Add("HumanResources.Employee","HumanResources.Employee")
$tableMap.Add("HumanResources.EmployeeDepartmentHistory","HumanResources.EmployeeDepartmentHistory")
$tableMap.Add("HumanResources.EmployeePayHistory","HumanResources.EmployeePayHistory")
$tableMap.Add("HumanResources.JobCandidate","HumanResources.JobCandidate")
$tableMap.Add("HumanResources.Shift","HumanResources.Shift")
De volgende stap is het selecteren van de bron- en doeldatabases en het opgeven van tabeltoewijzing om te migreren als een parameter met behulp van de New-AzDmsSelectedDB
cmdlet, zoals wordt weergegeven in het volgende voorbeeld:
$selectedDbs = New-AzDmsSelectedDB -MigrateSqlServerSqlDb -Name AdventureWorks2016 `
-TargetDatabaseName AdventureWorks2016 `
-TableMap $tableMap
De migratietaak maken en starten
Gebruik de New-AzDataMigrationTask
cmdlet om een migratietaak te maken en te starten. Deze cmdlet verwacht de volgende parameters:
- TaskType. Het type migratietaak dat moet worden gemaakt voor SQL Server naar Azure SQL Het migratietype MigrateSqlServerSqlDb van de database wordt verwacht.
- Naam van resourcegroep. Naam van de Azure-resourcegroep waarin de taak moet worden gemaakt.
- ServiceName. Azure Database Migration Service exemplaar waarin de taak moet worden gemaakt.
- ProjectName. Naam van Azure Database Migration Service project waarin de taak moet worden gemaakt.
- Taaknaam. Naam van de taak die moet worden gemaakt.
- SourceConnection. AzDmsConnInfo-object dat de bron SQL Server verbinding vertegenwoordigt.
- TargetConnection. AzDmsConnInfo-object dat het doel Azure SQL databaseverbinding vertegenwoordigt.
- SourceCred. PSCredential-object voor het maken van verbinding met de bronserver.
- TargetCred. PSCredential-object om verbinding te maken met de doelserver.
- SelectedDatabase. AzDataMigrationSelectedDB-object dat de bron- en doeldatabasetoewijzing vertegenwoordigt.
- SchemaValidation. (optioneel, schakelparameter) Na de migratie wordt een vergelijking van de schemagegevens tussen bron en doel uitgevoerd.
- DataIntegrityValidation. (optioneel, schakelparameter) Na de migratie voert u een validatie van de gegevensintegriteit op basis van een controlesom uit tussen de bron en het doel.
- QueryAnalysisValidation. (optioneel, schakelparameter) Na de migratie voert u een snelle en intelligente queryanalyse uit door query's op te halen uit de brondatabase en deze uit te voeren in het doel.
In het volgende voorbeeld wordt een migratietaak met de naam myDMSTask gemaakt en gestart:
$migTask = New-AzDataMigrationTask -TaskType MigrateSqlServerSqlDb `
-ResourceGroupName myResourceGroup `
-ServiceName $service.Name `
-ProjectName $project.Name `
-TaskName myDMSTask `
-SourceConnection $sourceConnInfo `
-SourceCred $sourceCred `
-TargetConnection $targetConnInfo `
-TargetCred $targetCred `
-SelectedDatabase $selectedDbs `
In het volgende voorbeeld wordt dezelfde migratietaak gemaakt en gestart als hierboven, maar worden ook alle drie de validaties uitgevoerd:
$migTask = New-AzDataMigrationTask -TaskType MigrateSqlServerSqlDb `
-ResourceGroupName myResourceGroup `
-ServiceName $service.Name `
-ProjectName $project.Name `
-TaskName myDMSTask `
-SourceConnection $sourceConnInfo `
-SourceCred $sourceCred `
-TargetConnection $targetConnInfo `
-TargetCred $targetCred `
-SelectedDatabase $selectedDbs `
-SchemaValidation `
-DataIntegrityValidation `
-QueryAnalysisValidation `
Bewaak de migratie
U kunt de uitgevoerde migratietaak controleren door een query uit te voeren op de statuseigenschap van de taak, zoals wordt weergegeven in het volgende voorbeeld:
if (($mytask.ProjectTask.Properties.State -eq "Running") -or ($mytask.ProjectTask.Properties.State -eq "Queued"))
{
write-host "migration task running"
}
Het DMS-exemplaar verwijderen
Nadat de migratie is voltooid, kunt u het Azure DMS-exemplaar verwijderen:
Remove-AzDms -ResourceGroupName myResourceGroup -ServiceName MyDMS
Volgende stap
- Bekijk de migratierichtlijnen in de Microsoft Database Migration Guide.