PowerShell &Azure Veritabanı Geçiş Hizmeti ile SQL Server'ı çevrimdışı SQL Yönetilen Örneği geçirme

Bu makalede, microsoft Azure PowerShell kullanarak sql server 2005 veya üzeri bir şirket içi örneğine geri yüklenen Adventureworks2016 veritabanını bir Azure SQL SQL Yönetilen Örneği çevrimdışı olarak geçirirsiniz. Microsoft Azure PowerShell'deki modülü kullanarak Az.DataMigration veritabanlarını SQL Server örneğinden SQL Yönetilen Örneği geçirebilirsiniz.

Bu makalede şunları öğreneceksiniz:

  • Kaynak grubu oluşturun.
  • Azure Veritabanı Geçiş Hizmeti örneği oluşturun.
  • Azure Veritabanı Geçiş Hizmeti örneğinde geçiş projesi oluşturun.
  • Geçişi çevrimdışı çalıştırın.

İpucu

Azure Veritabanı Geçiş Hizmeti veritabanlarınızı çevrimdışı veya çevrimiçiyken geçirebilirsiniz. Çevrimdışı geçişte, geçiş başladığında uygulama kapalı kalma süresi başlar. Kapalı kalma süresini geçişten sonra yeni ortama geçme süresiyle sınırlamak için çevrimiçi geçiş kullanın. Kapalı kalma süresinin kabul edilebilir olup olmadığını belirlemek için çevrimdışı geçişi test etmenizi öneririz. Beklenen kapalı kalma süresi kabul edilebilir değilse çevrimiçi geçiş yapın.

Bu makalede çevrimdışı geçiş için adımlar sağlanmaktadır, ancak çevrimiçi geçiş de mümkündür.

Önkoşullar

Bu adımları tamamlamak için şunlar gerekir:

  • SQL Server 2016 veya üzeri (herhangi bir sürüm).
  • AdventureWorks2016 veritabanının yerel bir kopyasıdır ve buradan indirebilirsiniz.
  • SQL Server Express yüklemesi ile varsayılan olarak devre dışı bırakılan TCP/IP protokollerini etkinleştirmek için. Sunucu Ağ Protokollerini Etkinleştirme veya Devre Dışı Bırakma makalesini izleyerek TCP/IP protokollerini etkinleştirin.
  • Veritabanı altyapısı erişimi için Windows Güvenlik Duvarınızı yapılandırmak için.
  • Azure aboneliği. Aboneliğiniz yoksa başlamadan önce ücretsiz bir hesap oluşturun.
  • bir SQL Yönetilen Örneği. Azure SQL Yönetilen Örneği oluşturma makalesindeki ayrıntıları izleyerek bir SQL Yönetilen Örneği oluşturabilirsiniz.
  • v3.3 veya sonraki Data Migration Yardımcısı indirip yüklemek için.
  • ExpressRoute veya VPN kullanarak şirket içi kaynak sunucularınıza siteden siteye bağlantı sağlayan Azure Resource Manager dağıtım modeli kullanılarak oluşturulmuş bir Microsoft Azure Azure Veritabanı Geçiş Hizmeti Sanal Ağ.
  • SQL Server geçiş değerlendirmesi gerçekleştirme makalesinde açıklandığı gibi, Data Migration Yardımcısı kullanarak şirket içi veritabanınızın ve şema geçişinizin tamamlanmış değerlendirmesi.
  • Install-Module PowerShell cmdlet'ini kullanarak modülü (sürüm 0.7.2 veya üzeri) PowerShell Galerisi indirip yüklemek Az.DataMigration için.
  • Kaynak SQL Server örneğine bağlanmak için kullanılan kimlik bilgilerinin CONTROL SERVER iznine sahip olduğundan emin olmak için.
  • Hedef SQL Yönetilen Örneği bağlanmak için kullanılan kimlik bilgilerinin hedef SQL Yönetilen Örneği veritabanlarında CONTROL DATABASE iznine sahip olduğundan emin olmak için.

Microsoft Azure aboneliğinizde oturum açın

PowerShell kullanarak Azure aboneliğinizde oturum açın. Daha fazla bilgi için Azure PowerShell ile oturum açma makalesine bakın.

Kaynak grubu oluşturma

Azure kaynak grubu, Azure kaynaklarının dağıtıldığı ve yönetildiği mantıksal bir kapsayıcıdır.

komutunu kullanarak New-AzResourceGroup bir kaynak grubu oluşturun.

Aşağıdaki örnek, Doğu ABD bölgesinde myResourceGroup adlı bir kaynak grubu oluşturur.

New-AzResourceGroup -ResourceGroupName myResourceGroup -Location EastUS

Azure Veritabanı Geçiş Hizmeti'nin örneğini oluşturma

cmdlet'ini kullanarak New-AzDataMigrationService yeni Azure Veritabanı Geçiş Hizmeti örneği oluşturabilirsiniz. Bu cmdlet aşağıdaki gerekli parametreleri bekler:

  • Azure Kaynak Grubu adı. Komutunu kullanarak New-AzResourceGroup daha önce gösterildiği gibi bir Azure Kaynak grubu oluşturabilir ve adını parametre olarak sağlayabilirsiniz.
  • Hizmet adı. Azure Veritabanı Geçiş Hizmeti için istenen benzersiz hizmet adına karşılık gelen dize.
  • Konum. Hizmetin konumunu belirtir. Batı ABD veya Güneydoğu Asya gibi bir Azure veri merkezi konumu belirtin.
  • Sku. Bu parametre DMS Sku adına karşılık gelir. Şu anda desteklenen Sku adları Basic_1vCore, Basic_2vCores GeneralPurpose_4vCores.
  • Sanal Alt Ağ Tanımlayıcısı. Bir alt ağ oluşturmak için cmdlet'ini New-AzVirtualNetworkSubnetConfig kullanabilirsiniz.

Aşağıdaki örnek, MyVNET adlı bir sanal ağı ve MySubnet adlı bir alt ağı kullanarak Doğu ABD bölgesinde bulunan MyDMSResourceGroup kaynak grubunda MyDMS adlı bir hizmet oluşturur.

$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`

Geçiş projesi oluşturma

Azure Veritabanı Geçiş Hizmeti örneği oluşturduktan sonra bir geçiş projesi oluşturun. Azure Veritabanı Geçiş Hizmeti projesi hem kaynak hem de hedef örnekler için bağlantı bilgilerinin yanı sıra projenin bir parçası olarak geçirmek istediğiniz veritabanlarının listesini gerektirir.

Kaynak ve hedef bağlantılar için Veritabanı Bağlan ion Info nesnesi oluşturma

Aşağıdaki parametreleri bekleyen cmdlet'ini New-AzDmsConnInfo kullanarak Veritabanı Bağlan ion Info nesnesi oluşturabilirsiniz:

  • ServerType. sql, oracle veya MySQL gibi istenen veritabanı bağlantısının türü. SQL Server ve Azure SQL için SQL kullanın.
  • DataSource. SQL Server örneğinin veya Azure SQL Veritabanı örneğinin adı veya IP'si.
  • AuthType. Bağlantı için SqlAuthentication veya WindowsAuthentication olabilecek kimlik doğrulama türü.
  • TrustServerCertificate. Bu parametre, güveni doğrulamak için sertifika zincirinde yürümeyi atlarken kanalın şifrelenip şifrelenmediğini gösteren bir değer ayarlar. Değer veya $falseolabilir$true.

Aşağıdaki örnek, sql kimlik doğrulamasını kullanarak MySourceSQLServer adlı kaynak SQL Server için bir Bağlan ion Info nesnesi oluşturur:

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

Sonraki örnekte , 'targetmanagedinstance' adlı bir Azure SQL Yönetilen Örneği için Bağlan Ion Info oluşturma işlemi gösterilmektedir:

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

Geçiş projesi için veritabanları sağlama

Azure Veritabanı Geçiş Hizmeti projesinin AzDataMigrationDatabaseInfo parçası olarak veritabanlarını belirten nesnelerin listesini oluşturun. Bu liste, projenin oluşturulması için parametre olarak sağlanabilir. cmdlet'ini New-AzDataMigrationDatabaseInfo kullanarak oluşturabilirsiniz AzDataMigrationDatabaseInfo.

Aşağıdaki örnek AdventureWorks2016 veritabanı için projeyi oluşturur AzDataMigrationDatabaseInfo ve proje oluşturma için parametre olarak sağlanacak listeye ekler.

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

Proje nesnesi oluşturma

Son olarak, kullanarak New-AzDataMigrationProject Doğu ABD'de bulunan MyDMSProject adlı bir Azure Veritabanı Geçiş Hizmeti projesi oluşturabilir ve daha önce oluşturulan kaynak ve hedef bağlantıları ve geçirebileceğiniz veritabanlarının listesini ekleyebilirsiniz.

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

Geçiş görevi oluşturma ve başlatma

Ardından bir Azure Veritabanı Geçiş Hizmeti görevi oluşturun ve başlatın. Bu görev hem kaynak hem de hedef için bağlantı kimlik bilgisi bilgilerinin yanı sıra geçirilecek veritabanı tablolarının listesini ve önkoşul olarak oluşturulan projeyle birlikte sağlanan bilgileri gerektirir.

Kaynak ve hedef için kimlik bilgisi parametreleri oluşturma

Bağlantı güvenliği kimlik bilgilerini PSCredential nesnesi olarak oluşturun.

Aşağıdaki örnekte hem kaynak hem de hedef bağlantılar için PSCredential nesnelerinin oluşturulması gösterilmektedir ve parolalar $sourcePassword ve $targetPassword dize değişkenleri olarak sağlanır.

$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)

Yedek FileShare nesnesi oluşturma

Şimdi Azure Veritabanı Geçiş Hizmeti cmdlet'ini kullanarak kaynak veritabanı yedeklerini alabildiği yerel SMB ağ paylaşımını New-AzDmsFileShare temsil eden bir FileShare nesnesi oluşturun.

$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

Seçili veritabanı nesnesini oluşturma

Sonraki adım, cmdlet'ini kullanarak kaynak ve hedef veritabanlarını seçmektir New-AzDmsSelectedDB .

Aşağıdaki örnek, tek bir veritabanını SQL Server'dan Azure SQL Yönetilen Örneği geçirmek içindir:

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

Sql Server örneğinin tamamı bir Azure SQL Yönetilen Örneği lift-and-shift'e ihtiyaç duyuyorsa, kaynaktan tüm veritabanlarını almaya yönelik bir döngü aşağıda verilmiştir. Aşağıdaki örnekte, $Server, $SourceUserName ve $SourcePassword için kaynak SQL Server ayrıntılarınızı sağlayın.

$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
      }

Azure Depolama Kapsayıcısı için SAS URI

Hizmetin yedekleme dosyalarını karşıya yüklediği depolama hesabı kapsayıcısına erişimi olan Azure Veritabanı Geçiş Hizmeti sağlayan SAS URI'sini içeren değişken oluşturun.

$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"

Not

Azure Veritabanı Geçiş Hizmeti hesap düzeyinde SAS belirteci kullanmayı desteklemez. Depolama hesabı kapsayıcısı için sas URI'sini kullanmanız gerekir. Blob kapsayıcısı için SAS URI değerini almayı öğrenin.

Ek yapılandırma gereksinimleri

Ele almanız gereken birkaç ek gereksinim vardır:

  • Oturum açma bilgilerini seçin. Aşağıdaki örnekte gösterildiği gibi geçirilecek oturum açma bilgilerinin listesini oluşturun:

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

    Önemli

    Şu anda Azure Veritabanı Geçiş Hizmeti yalnızca SQL oturum açma bilgilerinin geçirilmesini destekler.

  • Aracı işleri'ne tıklayın. Aşağıdaki örnekte gösterildiği gibi geçirilecek aracı işlerinin listesini oluşturun:

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

    Önemli

    Şu anda Azure Veritabanı Geçiş Hizmeti yalnızca T-SQL alt sistemi iş adımlarıyla işleri destekler.

Geçiş görevini oluşturma ve başlatma

New-AzDataMigrationTask Geçiş görevi oluşturmak ve başlatmak için cmdlet'ini kullanın.

Parametreleri belirtme

New-AzDataMigrationTask cmdlet aşağıdaki parametreleri bekler:

  • TaskType. SQL Server'ın GeçişSqlServerSqlDbMi geçiş türüne Azure SQL Yönetilen Örneği için oluşturulacak geçiş görevinin türü beklenir.
  • Kaynak Grubu Adı. Görevin oluşturulacağı Azure kaynak grubunun adı.
  • ServiceName. görevin oluşturulacağı Azure Veritabanı Geçiş Hizmeti örnek.
  • ProjectName. Görevin oluşturulacağı Azure Veritabanı Geçiş Hizmeti projenin adı.
  • GörevAdı. Oluşturulacak görevin adı.
  • Kaynak Bağlan. Kaynak SQL Server bağlantısını temsil eden AzDmsConnInfo nesnesi.
  • Hedef Bağlan. Hedef Azure SQL Yönetilen Örneği bağlantısını temsil eden AzDmsConnInfo nesnesi.
  • SourceCred. Kaynak sunucuya bağlanmak için PSCredential nesnesi.
  • TargetCred. Hedef sunucuya bağlanmak için PSCredential nesnesi.
  • SelectedDatabase. Kaynak ve hedef veritabanı eşlemesini temsil eden AzDataMigrationSelectedDB nesnesi.
  • BackupFileShare. Azure Veritabanı Geçiş Hizmeti kaynak veritabanı yedeklerini alabildiği yerel ağ paylaşımını temsil eden FileShare nesnesi.
  • BackupBlobSasUri. Azure Veritabanı Geçiş Hizmeti hizmetin yedekleme dosyalarını karşıya yüklediği depolama hesabı kapsayıcısına erişim sağlayan SAS URI'si. Blob kapsayıcısı için SAS URI değerini almayı öğrenin.
  • SelectedLogins. Geçirilecek seçili oturum açma bilgilerinin listesi.
  • SelectedAgentJobs. Geçirilecek seçili aracı işlerinin listesi.
  • SelectedLogins. Geçirilecek seçili oturum açma bilgilerinin listesi.
  • SelectedAgentJobs. Geçirilecek seçili aracı işlerinin listesi.

Geçiş görevi oluşturma ve başlatma

Aşağıdaki örnek myDMSTask adlı bir çevrimdışı geçiş görevi oluşturur ve başlatır:

$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 `

Geçişi izleme

Geçişi izlemek için aşağıdaki görevleri gerçekleştirin.

  1. Tüm geçiş ayrıntılarını $CheckTask adlı bir değişkende birleştirin.

    Geçişle ilişkili özellikler, durum ve veritabanı bilgileri gibi geçiş ayrıntılarını birleştirmek için aşağıdaki kod parçacığını kullanın:

    $CheckTask = Get-AzDataMigrationTask -ResourceGroupName myResourceGroup `
                                         -ServiceName $service.Name `
                                         -ProjectName $project.Name `
                                         -Name myDMSTask `
                                         -ResultType DatabaseLevelOutput `
                                         -Expand
    Write-Host ‘$CheckTask.ProjectTask.Properties.Output’
    
  2. Geçiş görevinin $CheckTask geçerli durumunu almak için değişkenini kullanın.

    Geçiş görevinin geçerli durumunu almak için değişkenini $CheckTask kullanmak için, aşağıdaki örnekte gösterildiği gibi görevin durum özelliğini sorgulayarak çalışan geçiş görevini izleyebilirsiniz:

    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"
    }
    

Azure Veritabanı Geçiş Hizmeti örneğini silme

Geçiş tamamlandıktan sonra Azure Veritabanı Geçiş Hizmeti örneğini silebilirsiniz:

Remove-AzDms -ResourceGroupName myResourceGroup -ServiceName MyDMS

Sonraki adımlar

Azure Veritabanı Geçiş Hizmeti nedir? makalesinde Azure Veritabanı Geçiş Hizmeti hakkında daha fazla bilgi edinin.

Ek geçiş senaryoları (kaynak/hedef çiftler) hakkında bilgi için bkz. Microsoft Veritabanı Geçiş Kılavuzu.