PowerShell ve Azure Veritabanı Geçiş Hizmeti ile SQL Server'ı çevrimiçi 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 çevrimiçi 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 çevrimiçi olarak çalıştırın.
Bahşiş
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 çevrimiçi geçiş için adımlar sağlanmaktadır, ancak çevrimdışı 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. A oluşturma SQL Yönetilen Örneği 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.
Önemli
Çevrimiçi geçişler için Microsoft Entra kimlik bilgilerinizi zaten ayarlamış olmanız gerekir. Daha fazla bilgi için portalı kullanarak kaynaklara erişebilen bir Microsoft Entra uygulaması ve hizmet sorumlusu oluşturma 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
DMS örneği 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ı bağlantı dizesi tanımlayın.
Aşağıdaki betik, kaynak SQL Server bağlantı ayrıntılarını tanımlar:
# Source connection properties
$sourceDataSource = "<mysqlserver.domain.com/privateIP of source SQL>"
$sourceUserName = "domain\user"
$sourcePassword = "mypassword"
Aşağıdaki betik, hedef SQL Yönetilen Örneği bağlantı ayrıntılarını tanımlar:
# Target MI connection properties
$targetMIResourceId = "/subscriptions/<subid>/resourceGroups/<rg>/providers/Microsoft.Sql/managedInstances/<myMI>"
$targetUserName = "<user>"
$targetPassword = "<password>"
Kaynak ve hedef veritabanı eşlemesini tanımlama
Bu geçiş projesinde geçirilecek veritabanlarını sağlayın
Aşağıdaki betik, kaynak veritabanını hedef SQL Yönetilen Örneği belirtilen adla ilgili yeni veritabanıyla eşler.
# Selected databases (Source database name to target database name mapping)
$selectedDatabasesMap = New-Object System.Collections.Generic.Dictionary"[String,String]"
$selectedDatabasesMap.Add("<source database name>", "<target database name> ")
Birden çok veritabanı için, aşağıdaki biçimi kullanarak veritabanları listesini yukarıdaki betike ekleyin:
$selectedDatabasesMap = New-Object System.Collections.Generic.Dictionary"[String,String]"
$selectedDatabasesMap.Add("<source database name1>", "<target database name1> ")
$selectedDatabasesMap.Add("<source database name2>", "<target database name2> ")
DMS projesi oluşturma
DMS örneğinde bir Azure Veritabanı Geçiş Hizmeti projesi oluşturabilirsiniz.
# Create DMS project
$project = New-AzDataMigrationProject `
-ResourceGroupName $dmsResourceGroupName `
-ServiceName $dmsServiceName `
-ProjectName $dmsProjectName `
-Location $dmsLocation `
-SourceType SQL `
-TargetType SQLMI `
# Create selected databases object
$selectedDatabases = @();
foreach ($sourceDbName in $selectedDatabasesMap.Keys){
$targetDbName = $($selectedDatabasesMap[$sourceDbName])
$selectedDatabases += New-AzDmsSelectedDB -MigrateSqlServerSqlDbMi `
-Name $sourceDbName `
-TargetDatabaseName $targetDbName `
-BackupFileShare $backupFileShare `
}
Yedek FileShare nesnesi oluşturma
Şimdi, Azure Veritabanı Geçiş Hizmeti New-AzDmsFileShare cmdlet'ini kullanarak kaynak veritabanı yedeklerini alabildiği yerel SMB ağ paylaşımını temsil eden bir FileShare nesnesi oluşturun.
# SMB Backup share properties
$smbBackupSharePath = "\\shareserver.domain.com\mybackup"
$smbBackupShareUserName = "domain\user"
$smbBackupSharePassword = "<password>"
# Create backup file share object
$smbBackupSharePasswordSecure = ConvertTo-SecureString -String $smbBackupSharePassword -AsPlainText -Force
$smbBackupShareCredentials = New-Object System.Management.Automation.PSCredential ($smbBackupShareUserName, $smbBackupSharePasswordSecure)
$backupFileShare = New-AzDmsFileShare -Path $smbBackupSharePath -Credential $smbBackupShareCredentials
Azure Depolama tanımlama
Geçiş için kullanılacak Azure Depolama Kapsayıcısı'na tıklayın:
# Storage resource id
$storageAccountResourceId = "/subscriptions/<subscriptionname>/resourceGroups/<rg>/providers/Microsoft.Storage/storageAccounts/<mystorage>"
Microsoft Entra Uygulamasını Yapılandırma
Çevrimiçi SQL Yönetilen Örneği geçişi için Microsoft Entra Id için gerekli ayrıntıları sağlayın:
# AAD properties
$AADAppId = "<appid-guid>"
$AADAppKey = "<app-key>"
# Create AAD object
$AADAppKeySecure = ConvertTo-SecureString $AADAppKey -AsPlainText -Force
$AADApp = New-AzDmsAadApp -ApplicationId $AADAppId -AppKey $AADAppKeySecure
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. Değişkenleri kullanarak kaynağı ve hedefi çağırın ve geçirilecek veritabanı tablolarını listeleyin:
# Managed Instance online migration properties
$dmsTaskName = "testmigration1"
# Create source connection info
$sourceConnInfo = New-AzDmsConnInfo -ServerType SQL `
-DataSource $sourceDataSource `
-AuthType WindowsAuthentication `
-TrustServerCertificate:$true
$sourcePasswordSecure = ConvertTo-SecureString -String $sourcePassword -AsPlainText -Force
$sourceCredentials = New-Object System.Management.Automation.PSCredential ($sourceUserName, $sourcePasswordSecure)
# Create target connection info
$targetConnInfo = New-AzDmsConnInfo -ServerType SQLMI `
-MiResourceId $targetMIResourceId
$targetPasswordSecure = ConvertTo-SecureString -String $targetPassword -AsPlainText -Force
$targetCredentials = New-Object System.Management.Automation.PSCredential ($targetUserName, $targetPasswordSecure)
Aşağıdaki örnek bir çevrimiçi geçiş görevi oluşturur ve başlatır:
# Create DMS migration task
$migTask = New-AzDataMigrationTask -TaskType MigrateSqlServerSqlDbMiSync `
-ResourceGroupName $dmsResourceGroupName `
-ServiceName $dmsServiceName `
-ProjectName $dmsProjectName `
-TaskName $dmsTaskName `
-SourceConnection $sourceConnInfo `
-SourceCred $sourceCredentials `
-TargetConnection $targetConnInfo `
-TargetCred $targetCredentials `
-SelectedDatabase $selectedDatabases `
-BackupFileShare $backupFileShare `
-AzureActiveDirectoryApp $AADApp `
-StorageResourceId $storageAccountResourceId
Daha fazla bilgi için bkz . New-AzDataMigrationTask.
Geçişi izleme
Geçişi izlemek için aşağıdaki görevleri gerçekleştirin.
Görevin durumunu denetleme
# Get migration task status details
$migTask = Get-AzDataMigrationTask `
-ResourceGroupName $dmsResourceGroupName `
-ServiceName $dmsServiceName `
-ProjectName $dmsProjectName `
-Name $dmsTaskName `
-ResultType DatabaseLevelOutput `
-Expand
# Task state will be either of 'Queued', 'Running', 'Succeeded', 'Failed', 'FailedInputValidation' or 'Faulted'
$taskState = $migTask.ProjectTask.Properties.State
# Display task state
$taskState | Format-List
Hataların listesini almak için aşağıdakileri kullanın:-
# Get task errors
$taskErrors = $migTask.ProjectTask.Properties.Errors
# Display task errors
foreach($taskError in $taskErrors){
$taskError | Format-List
}
# Get database level details
$databaseLevelOutputs = $migTask.ProjectTask.Properties.Output
# Display database level details
foreach($databaseLevelOutput in $databaseLevelOutputs){
# This is the source database name.
$databaseName = $databaseLevelOutput.SourceDatabaseName;
Write-Host "=========="
Write-Host "Start migration details for database " $databaseName
# This is the status for that database - It will be either of:
# INITIAL, FULL_BACKUP_UPLOADING, FULL_BACKUP_UPLOADED, LOG_FILES_UPLOADING,
# CUTOVER_IN_PROGRESS, CUTOVER_INITIATED, CUTOVER_COMPLETED, COMPLETED, CANCELLED, FAILED
$databaseMigrationState = $databaseLevelOutput.MigrationState;
# Details about last restored backup. This contains file names, LSN, backup date, etc
$databaseLastRestoredBackup = $databaseLevelOutput.LastRestoredBackupSetInfo
# Details about last restored backup. This contains file names, LSN, backup date, etc
$databaseLastRestoredBackup = $databaseLevelOutput.LastRestoredBackupSetInfo
# Details about last Currently active/most recent backups. This contains file names, LSN, backup date, etc
$databaseActiveBackpusets = $databaseLevelOutput.ActiveBackupSets
# Display info
$databaseLevelOutput | Format-List
Write-Host "Currently active/most recent backupset details:"
$databaseActiveBackpusets | select BackupStartDate, BackupFinishedDate, FirstLsn, LastLsn -ExpandProperty ListOfBackupFiles | Format-List
Write-Host "Last restored backupset details:"
$databaseLastRestoredBackupFiles | Format-List
Write-Host "End migration details for database " $databaseName
Write-Host "=========="
}
Tam geçişi gerçekleştirme
Çevrimiçi geçişle veritabanlarının tam yedeklemesi ve geri yüklemesi gerçekleştirilir ve ardından BackupFileShare'de depolanan İşlem Günlüklerini geri yükleme işlemi devam eder.
Azure SQL Yönetilen Örneği veritabanı en son verilerle güncelleştirildiğinde ve kaynak veritabanıyla eşitlendiğinde tam geçiş gerçekleştirebilirsiniz.
Aşağıdaki örnek tam geçiş işlemini tamamlar. Kullanıcılar kendi takdirlerine bağlı olarak bu komutu çağırır.
$command = Invoke-AzDmsCommand -CommandType CompleteSqlMiSync `
-ResourceGroupName myResourceGroup `
-ServiceName $service.Name `
-ProjectName $project.Name `
-TaskName myDMSTask `
-DatabaseName "Source DB Name"
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
Ek kaynaklar
Ek geçiş senaryoları (kaynak/hedef çiftler) hakkında bilgi için bkz. Microsoft Veritabanı Geçiş Kılavuzu.
Sonraki adımlar
Azure Veritabanı Geçiş Hizmeti nedir? makalesinde Azure Veritabanı Geçiş Hizmeti hakkında daha fazla bilgi edinin.