SQL Server offline migrálása felügyelt SQL-példányra a PowerShell és az Azure Database Migration Service használatával

Ebben a cikkben offline módon migrálja az Adventureworks2016 adatbázist az SQL Server 2005 vagy újabb helyszíni példányára egy Felügyelt Azure SQL-példányba a Microsoft Azure PowerShell használatával. Adatbázisokat migrálhat egy SQL Server-példányból egy felügyelt SQL-példányba a Az.DataMigration Microsoft Azure PowerShell moduljának használatával.

Ebben a cikkben az alábbiakkal ismerkedhet meg:

  • Hozzon létre egy erőforráscsoportot.
  • Hozzon létre egy Azure Database Migration Service-példányt.
  • Migrálási projekt létrehozása az Azure Database Migration Service egy példányában.
  • Futtassa az áttelepítést offline állapotban.

Tipp.

Az Azure Database Migration Service-ben az adatbázisokat offline vagy online állapotban is áttelepítheti. Offline migrálás esetén az alkalmazás állásideje az áttelepítés indításakor kezdődik. Ha az állásidőt a migrálás utáni új környezetre való átállás időtartamára szeretné korlátozni, használjon online migrálást. Javasoljuk, hogy tesztelje az offline migrálást annak megállapításához, hogy az állásidő elfogadható-e. Ha a várt állásidő nem elfogadható, végezze el az online migrálást.

Ez a cikk az offline migrálás lépéseit ismerteti, de online is áttelepíthető.

Előfeltételek

Az alábbi lépések végrehajtásához a következőkre van szüksége:

  • SQL Server 2016 vagy újabb (bármely kiadás).
  • Az AdventureWorks2016 adatbázis helyi példánya, amely innen tölthető le.
  • A TCP/IP protokoll engedélyezéséhez, amely alapértelmezés szerint le van tiltva az SQL Server Express telepítésével. Engedélyezze a TCP/IP protokollt a Kiszolgálói hálózati protokoll engedélyezése vagy letiltása című cikkben leírtak szerint.
  • A Windows tűzfal adatbázismotor-hozzáféréshez való konfigurálásához.
  • Azure-előfizetés. Ha még nincs előfizetése, hozzon létre egy ingyenes fiókot, mielőtt hozzákezd.
  • Felügyelt SQL-példány. Felügyelt SQL-példányt úgy hozhat létre, ha a Felügyelt Azure SQL-példány létrehozása című cikkben leírtakat követi.
  • A Data Migration Assistant 3.3-s vagy újabb verziójának letöltéséhez és telepítéséhez.
  • Az Azure Resource Manager üzemi modellel létrehozott Microsoft Azure-beli virtuális hálózat, amely az Azure Database Migration Service-nek helyek közötti kapcsolatot biztosít a helyszíni forráskiszolgálókkal expressRoute vagy VPN használatával.
  • A helyszíni adatbázis és séma migrálásának befejezett értékelése a Data Migration Assistant használatával, az SQL Server migrálási felmérésének elvégzéséről szóló cikkben leírtak szerint.
  • A modul (0.7.2-es vagy újabb verzió) letöltése és telepítése Az.DataMigration a PowerShell-galéria az Install-Module PowerShell-parancsmag használatával.
  • Annak biztosítása érdekében, hogy a forrás SQL Server-példányhoz való csatlakozáshoz használt hitelesítő adatok rendelkeznek a CONTROL Standard kiadás RVER engedéllyel.
  • Annak biztosítása érdekében, hogy a felügyelt SQL-példány célpéldányához való csatlakozáshoz használt hitelesítő adatok rendelkezzenek a CONTROL DATABA Standard kiadás engedéllyel a felügyelt SQL-példányok céladatbázisaihoz.

Bejelentkezés a Microsoft Azure-előfizetésbe

Jelentkezzen be Az Azure-előfizetésbe a PowerShell használatával. További információ: Bejelentkezés az Azure PowerShell-lel.

Erőforráscsoport létrehozása

Az Azure-erőforráscsoport egy logikai tároló, amelyben az Azure-erőforrások üzembe helyezése és kezelése történik.

Hozzon létre egy erőforráscsoportot a New-AzResourceGroup parancs használatával.

Az alábbi példa létrehoz egy myResourceGroup nevű erőforráscsoportot az USA keleti régiójában.

New-AzResourceGroup -ResourceGroupName myResourceGroup -Location EastUS

Egy Azure Database Migration Service-példány létrehozása

A parancsmaggal létrehozhatja az New-AzDataMigrationService Azure Database Migration Service új példányát. Ez a parancsmag a következő szükséges paramétereket várja:

  • Azure-erőforráscsoport neve. A parancs segítségével New-AzResourceGroup létrehozhat egy Azure-erőforráscsoportot a korábban bemutatott módon, és paraméterként megadhatja a nevét.
  • Szolgáltatásnév. Az Azure Database Migration Service kívánt egyedi szolgáltatásnevének megfelelő sztring.
  • Hely. A szolgáltatás helyét adja meg. Adjon meg egy Azure-adatközpont helyét, például az USA nyugati régióját vagy Délkelet-Ázsiát.
  • Termékváltozat. Ez a paraméter megfelel a DMS termékváltozat nevének. A jelenleg támogatott termékváltozatok neve Basic_1vCore, Basic_2vCores és GeneralPurpose_4vCores.
  • Virtuális alhálózat azonosítója. A parancsmaggal New-AzVirtualNetworkSubnetConfig alhálózatot hozhat létre.

Az alábbi példa létrehoz egy MyDMS nevű szolgáltatást az USA keleti régiójában található MyDMSResourceGroup erőforráscsoportban egy MyVNET nevű virtuális hálózat és egy MySubnet nevű alhálózat használatával.

$vNet = Get-AzVirtualNetwork -ResourceGroupName MyDMSResourceGroup -Name MyVNET

$vSubNet = Get-AzVirtualNetworkSubnetConfig -VirtualNetwork $vNet -Name MySubnet

$service = New-AzDms -ResourceGroupName myResourceGroup `
  -ServiceName MyDMS `
  -Location EastUS `
  -Sku Basic_2vCores `
  -VirtualSubnetId $vSubNet.Id`

Migrálási projekt létrehozása

Az Azure Database Migration Service-példány létrehozása után hozzon létre egy migrálási projektet. Az Azure Database Migration Service-projektekhez kapcsolati adatokra van szükség a forrás- és célpéldányokhoz, valamint a projekt részeként migrálni kívánt adatbázisok listájához.

Adatbázis-Csatlakozás ion info objektum létrehozása a forrás- és célkapcsolatokhoz

Adatbázis-Csatlakozás ion Info objektumot a New-AzDmsConnInfo parancsmaggal hozhat létre, amely a következő paramétereket várja:

  • ServerType. A kért adatbázis-kapcsolat típusa, például SQL, Oracle vagy MySQL. SQL használata AZ SQL Serverhez és az Azure SQL-hez.
  • DataSource. Sql Server-példány vagy Azure SQL Database-példány neve vagy IP-címe.
  • AuthType. A kapcsolat hitelesítési típusa, amely lehet SqlAuthentication vagy WindowsAuthentication.
  • TrustServerCertificate. Ez a paraméter beállít egy értéket, amely jelzi, hogy a csatorna titkosítva van-e, miközben megkerüli a tanúsítványláncot a megbízhatóság ellenőrzéséhez. Az érték lehet $true vagy $false.

Az alábbi példa létrehoz egy Csatlakozás ion Info objektumot egy MySourceSQLServer nevű forrás SQL Serverhez sql-hitelesítéssel:

$sourceConnInfo = New-AzDmsConnInfo -ServerType SQL `
  -DataSource MySourceSQLServer `
  -AuthType SqlAuthentication `
  -TrustServerCertificate:$true

A következő példa a "targetmanagedinstance" nevű Felügyelt Azure SQL-példány Csatlakozás ion-adatainak létrehozását mutatja be:

$targetResourceId = (Get-AzSqlInstance -Name "targetmanagedinstance").Id
$targetConnInfo = New-AzDmsConnInfo -ServerType SQLMI -MiResourceId $targetResourceId

Adatbázisok megadása a migrálási projekthez

Hozzon létre egy listát azokról az AzDataMigrationDatabaseInfo objektumokról, amelyek az Azure Database Migration Service-projekt részeként adják meg az adatbázisokat, amelyek paraméterként adhatók meg a projekt létrehozásához. A parancsmaggal létrehozhatja a parancsmagot New-AzDataMigrationDatabaseInfoAzDataMigrationDatabaseInfo.

Az alábbi példa létrehozza a AzDataMigrationDatabaseInfo projektet az AdventureWorks2016-adatbázishoz , és hozzáadja a projekt létrehozásához paraméterként megadott listához.

$dbInfo1 = New-AzDataMigrationDatabaseInfo -SourceDatabaseName AdventureWorks
$dbList = @($dbInfo1)

Projektobjektum létrehozása

Végül létrehozhat egy Azure Database Migration Service-projektet az USA New-AzDataMigrationProject keleti régiójában található MyDMSProject néven, és hozzáadhatja a korábban létrehozott forrás- és célkapcsolatokat, valamint a migrálni kívánt adatbázisok listáját.

$project = New-AzDataMigrationProject -ResourceGroupName myResourceGroup `
  -ServiceName $service.Name `
  -ProjectName MyDMSProject `
  -Location EastUS `
  -SourceType SQL `
  -TargetType SQLMI `
  -SourceConnection $sourceConnInfo `
  -TargetConnection $targetConnInfo `
  -DatabaseInfo $dbList

Migrálási feladat létrehozása és indítása

Ezután hozzon létre és indítsa el az Azure Database Migration Service-feladatot. Ehhez a feladathoz a forrás és a cél kapcsolati hitelesítő adataira, valamint az áttelepítendő adatbázistáblák listájára és a projekt előfeltételként létrehozott információira is szükség van.

Hitelesítő adatok paramétereinek létrehozása a forráshoz és a célhoz

Hozzon létre kapcsolatbiztonsági hitelesítő adatokat PSCredential objektumként.

Az alábbi példa a PSCredential objektumok létrehozását mutatja be a forrás- és a célkapcsolatokhoz, és sztringváltozóként adja meg a jelszavakat $sourcePassword és $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)

Backup FileShare-objektum létrehozása

Most hozzon létre egy FileShare-objektumot, amely a helyi SMB hálózati megosztást jelöli, ahová az Azure Database Migration Service a parancsmag használatával készíthet biztonsági másolatot a New-AzDmsFileShare forrásadatbázisról.

$backupPassword = ConvertTo-SecureString -String $password -AsPlainText -Force
$backupCred = New-Object System.Management.Automation.PSCredential ($backupUserName, $backupPassword)

$backupFileSharePath="\\10.0.0.76\SharedBackup"
$backupFileShare = New-AzDmsFileShare -Path $backupFileSharePath -Credential $backupCred

Kijelölt adatbázis-objektum létrehozása

A következő lépés a forrás- és céladatbázisok kiválasztása a New-AzDmsSelectedDB parancsmag használatával.

Az alábbi példa egyetlen adatbázis sql serverről felügyelt Azure SQL-példányra való migrálására szolgál:

$selectedDbs = @()
$selectedDbs += New-AzDmsSelectedDB -MigrateSqlServerSqlDbMi `
  -Name AdventureWorks2016 `
  -TargetDatabaseName AdventureWorks2016 `
  -BackupFileShare $backupFileShare `

Ha egy teljes SQL Server-példányt át kell emelni egy Felügyelt Azure SQL-példányba, akkor az alábbiakban egy hurkot biztosítunk, amely az összes adatbázist kiveheti a forrásból. Az alábbi példában $Server, $SourceUserName és $SourcePassword adja meg a forrás SQL Server adatait.

$Query = "(select name as Database_Name from master.sys.databases where Database_id>4)";
$Databases= (Invoke-Sqlcmd -ServerInstance "$Server" -Username $SourceUserName
-Password $SourcePassword -database master -Query $Query)
$selectedDbs=@()
foreach($DataBase in $Databases.Database_Name)
    {
      $SourceDB=$DataBase
      $TargetDB=$DataBase

$selectedDbs += New-AzureRmDmsSelectedDB -MigrateSqlServerSqlDbMi `
                                              -Name $SourceDB `
                                              -TargetDatabaseName $TargetDB `
                                              -BackupFileShare $backupFileShare
      }

SAS URI az Azure Storage-tárolóhoz

Hozzon létre egy olyan változót, amely tartalmazza az SAS URI-t, amely hozzáférést biztosít az Azure Database Migration Service-nek ahhoz a tárfióktárolóhoz, amelyre a szolgáltatás feltölti a biztonsági mentési fájlokat.

$blobSasUri="https://mystorage.blob.core.windows.net/test?st=2018-07-13T18%3A10%3A33Z&se=2019-07-14T18%3A10%3A00Z&sp=rwdl&sv=2018-03-28&sr=c&sig=qKlSA512EVtest3xYjvUg139tYSDrasbftY%3D"

Feljegyzés

Az Azure Database Migration Service nem támogatja a fiókszintű SAS-jogkivonat használatát. A tárfiók tárolójához SAS URI-t kell használnia. Itt találja az arra vonatkozó tudnivalókat, hogyan kérheti le a blobtároló SAS URI-ját.

További konfigurációs követelmények

Néhány további követelményt is meg kell felelnie:

  • Válassza ki a bejelentkezéseket. Hozzon létre egy listát a migrálandó bejelentkezésekről az alábbi példában látható módon:

    $selectedLogins = @("user1", "user2")
    

    Fontos

    Az Azure Database Migration Service jelenleg csak az SQL-bejelentkezések migrálását támogatja.

  • Válassza ki az ügynökfeladatokat. Hozza létre a migrálandó ügynökfeladatok listáját az alábbi példában látható módon:

    $selectedAgentJobs = @("agentJob1", "agentJob2")
    

    Fontos

    Az Azure Database Migration Service jelenleg csak a T-SQL alrendszer feladatlépéseivel rendelkező feladatokat támogatja.

Az áttelepítési feladat létrehozása és indítása

New-AzDataMigrationTask A parancsmaggal migrálási feladatot hozhat létre és indíthat el.

Paraméterek megadása

A New-AzDataMigrationTask parancsmag a következő paramétereket várja:

  • TaskType. Az SQL Server és az Azure SQL Managed Instance migrálási típusának MigrateSqlServerSqlDbMi típusú migrálási feladata várható.
  • Erőforráscsoport neve. Annak az Azure-erőforráscsoportnak a neve, amelyben létre kívánja hozni a feladatot.
  • ServiceName. Azure Database Migration Service-példány, amelyben a feladatot létre szeretné hozni.
  • ProjectName. Annak az Azure Database Migration Service-projektnek a neve, amelyben létre szeretné hozni a feladatot.
  • TaskName. A létrehozandó feladat neve.
  • Forrás Csatlakozás ion. A forrás SQL Server-kapcsolatot képviselő AzDmsConnInfo objektum.
  • Cél Csatlakozás. Az AzDmsConnInfo objektum, amely a felügyelt Azure SQL-példány célkapcsolatát képviseli.
  • SourceCred. PSCredential objektum a forráskiszolgálóhoz való csatlakozáshoz.
  • TargetCred. PSCredential objektum a célkiszolgálóhoz való csatlakozáshoz.
  • SelectedDatabase. AzDataMigrationSelectedDB objektum, amely a forrás- és céladatbázis-leképezést jelöli.
  • BackupFileShare. Az Azure Database Migration Service által a forrásadatbázis biztonsági mentéséhez használt helyi hálózati megosztást jelképező FileShare-objektum.
  • BackupBlobSasUri. Az Sas URI, amely hozzáférést biztosít az Azure Database Migration Service-nek ahhoz a tárfiók-tárolóhoz, amelyre a szolgáltatás feltölti a biztonsági mentési fájlokat. Itt találja az arra vonatkozó tudnivalókat, hogyan kérheti le a blobtároló SAS URI-ját.
  • SelectedLogins. A migrálni kívánt bejelentkezések listája.
  • SelectedAgentJobs. A migrálni kívánt ügynökfeladatok listája.
  • SelectedLogins. A migrálni kívánt bejelentkezések listája.
  • SelectedAgentJobs. A migrálni kívánt ügynökfeladatok listája.

Migrálási feladat létrehozása és indítása

Az alábbi példa létrehoz és elindít egy myDMSTask nevű offline migrálási feladatot:

$migTask = New-AzDataMigrationTask -TaskType MigrateSqlServerSqlDbMi `
  -ResourceGroupName myResourceGroup `
  -ServiceName $service.Name `
  -ProjectName $project.Name `
  -TaskName myDMSTask `
  -SourceConnection $sourceConnInfo `
  -SourceCred $sourceCred `
  -TargetConnection $targetConnInfo `
  -TargetCred $targetCred `
  -SelectedDatabase  $selectedDbs `
  -BackupFileShare $backupFileShare `
  -BackupBlobSasUri $blobSasUri `
  -SelectedLogins $selectedLogins `
  -SelectedAgentJobs $selectedJobs `

A migrálás monitorozása

A migrálás figyeléséhez hajtsa végre a következő feladatokat.

  1. Összesítse az összes migrálási adatot egy $CheckTask nevű változóba.

    Az áttelepítés részleteinek, például a tulajdonságoknak, az állapotnak és az adatbázis-adatoknak az áttelepítéshez való kombinálásához használja a következő kódrészletet:

    $CheckTask = Get-AzDataMigrationTask -ResourceGroupName myResourceGroup `
                                         -ServiceName $service.Name `
                                         -ProjectName $project.Name `
                                         -Name myDMSTask `
                                         -ResultType DatabaseLevelOutput `
                                         -Expand
    Write-Host ‘$CheckTask.ProjectTask.Properties.Output’
    
  2. A változóval $CheckTask lekérheti az áttelepítési feladat aktuális állapotát.

    Ha a $CheckTask változóval szeretné lekérni az áttelepítési tevékenység aktuális állapotát, a feladat állapottulajdonságának lekérdezésével figyelheti a futtatott migrálási feladatot, ahogyan az az alábbi példában látható:

    if (($CheckTask.ProjectTask.Properties.State -eq "Running") -or ($CheckTask.ProjectTask.Properties.State -eq "Queued"))
    {
      Write-Host "migration task running"
    }
    else if($CheckTask.ProjectTask.Properties.State -eq "Succeeded")
    {
      Write-Host "Migration task is completed Successfully"
    }
    else if($CheckTask.ProjectTask.Properties.State -eq "Failed" -or $CheckTask.ProjectTask.Properties.State -eq "FailedInputValidation" -or $CheckTask.ProjectTask.Properties.State -eq "Faulted")
    {
      Write-Host "Migration Task Failed"
    }
    

Az Azure Database Migration Service példányának törlése

A migrálás befejezése után törölheti az Azure Database Migration Service-példányt:

Remove-AzDms -ResourceGroupName myResourceGroup -ServiceName MyDMS

Következő lépések

Az Azure Database Migration Service-ről további információt a Mi az Azure Database Migration Service? című cikkben talál.

További migrálási forgatókönyvekről (forrás-/célpárok) a Microsoft Database migrálási útmutatójában olvashat.