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
$false
olabilir$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.
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’
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.