ترحيل SQL Server إلى مثيل SQL مدار دون اتصال باستخدام خدمة ترحيل قاعدة بيانات PowerShell & Azure
في هذه المقالة، يمكنك دون اتصال ترحيل قاعدة بيانات Adventureworks2016 المستعادة إلى مثيل محلي من SQL Server 2005 أو أعلى إلى Azure SQL SQL المثيل المدار باستخدام Microsoft Azure PowerShell. يمكنك ترحيل قواعد البيانات من مثيل SQL Server إلى مثيل مدار SQL باستخدام Az.DataMigration الوحدة النمطية في Microsoft Azure PowerShell.
ستتعلم في هذا المقال طريقة إجراء ما يلي:
- إنشاء مجموعة موارد.
- إنشاء مثيل لخدمة Azure Database Migration Service.
- إنشاء مشروع ترحيل في مثيل من خدمة ترحيل قاعدة بيانات Azure.
- قم بتشغيل الترحيل دون اتصال.
تلميح
عند ترحيل قواعد البيانات إلى Azure باستخدام خدمة Azure Database Migration، يمكنك القيام به دون اتصال بالإنترنت أو ترحيل عبر إنترنت. في حال الترحيل دون اتصال بالإنترنت، يبدأ توقف التطبيق عند بدء الترحيل. في حال الترحيل عبر الإنترنت، يقتصر وقت توقف التطبيق على الوقت الذي يتم قطعه في نهاية الترحيل. نوصي بأن تختبر الترحيل في وضع عدم الاتصال بالإنترنت لتحديد ما إذا كان وقت التوقف مقبولاً أم لا؛ إذا لم يكن الأمر كذلك، فقم بالترحيل عبر الإنترنت.
توفر هذه المقالة خطوات للترحيل دون اتصال، ولكن من الممكن أيضا الترحيل عبر الإنترنت.
المتطلبات الأساسية
لإكمال هذه الخطوات، أنت بحاجة إلى:
- SQL Server 2016 أو أعلى (أي إصدار).
- نسخة محلية من قاعدة بيانات AdventureWorks2016 ، والتي تتوفر للتنزيل هنا.
- لتمكين بروتوكول TCP/IP، الذي يتم تعطيله افتراضيا مع تثبيت SQL Server Express. تمكين بروتوكول TCP/IP باتباع المقالة تمكين أو تعطيل بروتوكول شبكة اتصال خادم.
- لتكوين جدار حماية Windows للوصول إلى محرك قاعدة البيانات.
- اشتراك Azure. إذا لم يكن لديك حساب، فقم بإنشاء حساب مجاني قبل أن تبدأ.
- مثيل مدار SQL. يمكنك إنشاء مثيل مدار SQL باتباع التفاصيل الواردة في المقالة إنشاء مثيل ASQL مدار.
- لتنزيل الإصدار 3.3 من "مساعد ترحيل البيانات " وتثبيته أو إصدار أحدث.
- شبكة Microsoft Azure الظاهرية التي تم إنشاؤها باستخدام نموذج نشر Azure Resource Manager، والذي يوفر لخدمة ترحيل قاعدة بيانات Azure إمكانية الاتصال من موقع إلى موقع بخوادم المصدر المحلية باستخدام ExpressRoute أو VPN.
- تقييم مكتمل لقاعدة البيانات المحلية وترحيل المخطط باستخدام "مساعد ترحيل البيانات"، كما هو موضح في المقالة إجراء تقييم ترحيل SQL Server.
- لتنزيل الوحدة النمطية وتثبيتها
Az.DataMigration(الإصدار 0.7.2 أو أحدث) من معرض PowerShell باستخدام cmdlet PowerShell لتثبيت الوحدة النمطية. - للتأكد من أن بيانات الاعتماد المستخدمة للاتصال بالمصدر SQL Server المثيل لديها إذن CONTROL SERVER.
- للتأكد من أن بيانات الاعتماد المستخدمة للاتصال بالهدف SQL المثيل المدار يحتوي على إذن قاعدة بيانات CONTROL على قواعد بيانات المثيل المدار SQL الهدف.
تسجيل الدخول إلى اشتراكك في Microsoft Azure
سجل الدخول إلى اشتراكك في Azure باستخدام PowerShell. لمزيد من المعلومات، راجع المقالة تسجيل الدخول باستخدام Azure PowerShell.
قم بإنشاء مجموعة موارد
مجموعة موارد Azure عبارة عن حاوية منطقية يتم فيها توزيع موارد Azure وإدارتها.
إنشاء مجموعة موارد باستخدام الأمر New-AzResourceGroup .
ينشئ المثال التالي مجموعة موارد تسمى myResourceGroup في منطقة شرق الولايات المتحدة .
New-AzResourceGroup -ResourceGroupName myResourceGroup -Location EastUS
قم بإنشاء مثيل لـ Azure Database Migration Service
يمكنك إنشاء مثيل جديد من خدمة ترحيل قاعدة بيانات Azure باستخدام New-AzDataMigrationService cmdlet.
يتوقع cmdlet هذا المعلمات المطلوبة التالية:
- اسم مجموعة موارد Azure. يمكنك استخدام
New-AzResourceGroupالأمر لإنشاء مجموعة موارد Azure كما هو موضح سابقا وتوفير اسمها كمعلمة. - اسم الخدمة. سلسلة تتوافق مع اسم الخدمة الفريدة المطلوبة لخدمة ترحيل قاعدة بيانات Azure.
- Location. يحدد موقع الخدمة. حدد موقع مركز بيانات Azure، مثل غرب الولايات المتحدة أو جنوب شرق آسيا.
- Sku. تتوافق هذه المعلمة مع اسم DMS Sku. أسماء Sku المدعومة حاليا هي Basic_1vCoreBasic_2vCoresGeneralPurpose_4vCores.
- معرف الشبكة الفرعية الافتراضية. يمكنك استخدام cmdlet
New-AzVirtualNetworkSubnetConfigلإنشاء شبكة فرعية.
يقوم المثال التالي بإنشاء خدمة باسم MyDMS في مجموعة الموارد MyDMSResourceGroup الموجودة في منطقة شرق الولايات المتحدة باستخدام شبكة ظاهرية باسم MyVNET وشبكة فرعية باسم MySubnet.
$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`
قم بإنشاء مشروع ترحيل.
بعد إنشاء مثيل خدمة ترحيل قاعدة بيانات Azure، قم بإنشاء مشروع ترحيل. يتطلب مشروع Azure Database Migration Service معلومات اتصال لكل من المثيلات المصدر والهدف، بالإضافة إلى قائمة بقواعد البيانات التي تريد ترحيلها كجزء من المشروع.
قم بإنشاء كائن "معلومات اتصال قاعدة البيانات" لاتصالات المصدر والهدف
يمكنك إنشاء كائن "معلومات اتصال قاعدة البيانات" باستخدام New-AzDmsConnInfo cmdlet، الذي يتوقع المعلمات التالية:
- نوع الخادم. نوع اتصال قاعدة البيانات المطلوب، على سبيل المثال، SQL أو Oracle أو MySQL. استخدم SQL SQL Server SQL وAzure.
- مصدر البيانات. اسم أو عنوان IP الخاص بمثيل SQL Server أو مثيل قاعدة بيانات Azure SQL.
- AuthType. نوع المصادقة للاتصال، والذي يمكن أن يكون إما SqlAuthentication أو WindowsAuthentication.
- شهادة ترست سيرفر. تقوم هذه المعلمة بتعيين قيمة تشير إلى ما إذا كانت القناة مشفرة أثناء تجاوز السير في سلسلة الشهادات للتحقق من صحة الثقة. يمكن أن تكون القيمة
$trueأو$false.
يقوم المثال التالي بإنشاء كائن "معلومات الاتصال" لمصدر SQL Server يسمى MySourceSQLServer باستخدام مصادقة sql:
$sourceConnInfo = New-AzDmsConnInfo -ServerType SQL `
-DataSource MySourceSQLServer `
-AuthType SqlAuthentication `
-TrustServerCertificate:$true
يوضح المثال التالي إنشاء معلومات الاتصال لمثيل Azure SQL مدار باسم "targetmanagedinstance":
$targetResourceId = (Get-AzSqlInstance -Name "targetmanagedinstance").Id
$targetConnInfo = New-AzDmsConnInfo -ServerType SQLMI -MiResourceId $targetResourceId
توفير قواعد بيانات لمشروع الترحيل
قم بإنشاء قائمة AzDataMigrationDatabaseInfo بالكائنات التي تحدد قواعد البيانات كجزء من مشروع Azure Database Migration Service، والتي يمكن توفيرها كمعلمة لإنشاء المشروع. يمكنك استخدام cmdlet New-AzDataMigrationDatabaseInfo لإنشاء AzDataMigrationDatabaseInfo.
ينشئ AzDataMigrationDatabaseInfo المثال التالي المشروع لقاعدة بيانات AdventureWorks2016 ويضيفه إلى القائمة التي سيتم توفيرها كمعلمة لإنشاء المشروع.
$dbInfo1 = New-AzDataMigrationDatabaseInfo -SourceDatabaseName AdventureWorks
$dbList = @($dbInfo1)
إنشاء كائن مشروع
وأخيرا، يمكنك إنشاء مشروع خدمة ترحيل قاعدة بيانات Azure يسمى MyDMSProject الموجود في شرق الولايات المتحدة باستخدام New-AzDataMigrationProject وإضافة اتصالات المصدر والهدف التي تم إنشاؤها مسبقا وقائمة قواعد البيانات المراد ترحيلها.
$project = New-AzDataMigrationProject -ResourceGroupName myResourceGroup `
-ServiceName $service.Name `
-ProjectName MyDMSProject `
-Location EastUS `
-SourceType SQL `
-TargetType SQLMI `
-SourceConnection $sourceConnInfo `
-TargetConnection $targetConnInfo `
-DatabaseInfo $dbList
إنشاء مهمة ترحيل وبدء تشغيلها
بعد ذلك، قم بإنشاء مهمة خدمة ترحيل قاعدة بيانات Azure وبدء تشغيلها. تتطلب هذه المهمة معلومات بيانات اعتماد الاتصال لكل من المصدر والهدف، بالإضافة إلى قائمة جداول قاعدة البيانات المراد ترحيلها والمعلومات المتوفرة بالفعل مع المشروع الذي تم إنشاؤه كشرط أساسي.
إنشاء معلمات بيانات الاعتماد للمصدر والهدف
إنشاء بيانات اعتماد أمان الاتصال ككائن PSCredential .
يوضح المثال التالي إنشاء كائنات PSCredential لكل من اتصالات المصدر والهدف، وتوفير كلمات المرور كمتغيرات سلسلة $sourcePassword$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)
إنشاء كائن FileShare نسخة احتياطية
الآن قم بإنشاء كائن FileShare يمثل مشاركة شبكة SMB المحلية التي يمكن لخدمة ترحيل قاعدة بيانات Azure أخذ النسخ الاحتياطية لقاعدة البيانات المصدر باستخدام New-AzDmsFileShare cmdlet.
$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
إنشاء كائن قاعدة بيانات محدد
الخطوة التالية هي تحديد قواعد البيانات المصدر والهدف باستخدام New-AzDmsSelectedDB cmdlet.
المثال التالي هو لترحيل قاعدة بيانات واحدة من SQL Server إلى مثيل Azure SQL المدار:
$selectedDbs = @()
$selectedDbs += New-AzDmsSelectedDB -MigrateSqlServerSqlDbMi `
-Name AdventureWorks2016 `
-TargetDatabaseName AdventureWorks2016 `
-BackupFileShare $backupFileShare `
إذا احتاج مثيل SQL Server بأكمله إلى رفع وتحويل إلى مثيل Azure SQL المدار، توفير حلقة لنقل جميع قواعد البيانات من المصدر أدناه. في المثال التالي، على سبيل $Server، $SourceUserName $SourcePassword، قدم تفاصيل SQL Server المصدر.
$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 for Azure Storage Container
إنشاء متغير يحتوي على SAS URI الذي يوفر لخدمة ترحيل قاعدة بيانات Azure إمكانية الوصول إلى حاوية حساب التخزين التي تقوم الخدمة بتحميل ملفات النسخ الاحتياطي إليها.
$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"
ملاحظة
لا تدعم خدمة ترحيل قاعدة بيانات Azure استخدام رمز SAS المميز على مستوى الحساب. يجب عليك استخدام SAS URI لحاوية حساب التخزين. تعلم كيفية الحصول على عنوان URI الخاص بـ SAS لحاوية الكائن الثنائي كبير الحجم.
متطلبات التكوين الإضافية
هناك بعض المتطلبات الإضافية التي تحتاج إلى معالجتها:
حدد عمليات تسجيل الدخول. قم بإنشاء قائمة بعمليات تسجيل الدخول المراد ترحيلها كما هو موضح في المثال التالي:
$selectedLogins = @("user1", "user2")هام
حاليا، تدعم خدمة ترحيل قاعدة بيانات Azure ترحيل عمليات تسجيل الدخول SQL فقط.
حدد وظائف الوكيل. قم بإنشاء قائمة بوظائف الوكلاء المراد ترحيلها كما هو موضح في المثال التالي:
$selectedAgentJobs = @("agentJob1", "agentJob2")هام
حاليا، تدعم خدمة ترحيل قاعدة بيانات Azure فقط الوظائف التي تتضمن خطوات عمل النظام الفرعي T-SQL.
إنشاء مهمة الترحيل وتشغيلها
New-AzDataMigrationTask استخدم cmdlet لإنشاء مهمة ترحيل وبدء تشغيلها.
تحديد المعلمات
New-AzDataMigrationTask يتوقع cmdlet المعلمات التالية:
- نوع المهمة. نوع مهمة الترحيل المراد إنشاؤها SQL Server إلى Azure SQL من المتوقع نوع ترحيل المثيل المدار MigrateSqlServerSqlDbMi.
- اسم مجموعة الموارد. اسم مجموعة موارد Azure لإنشاء المهمة.
- اسم الخدمة. مثيل Azure Database Migration Service لإنشاء المهمة.
- اسم المشروع. اسم مشروع Azure Database Migration Service لإنشاء المهمة.
- اسم المهمة. اسم المهمة المراد إنشاؤها.
- SourceConnection. كائن AzDmsConnInfo يمثل اتصال SQL Server المصدر.
- تارجت كونكشن. كائن AzDmsConnInfo يمثل الهدف Azure SQL اتصال مثيل مدار.
- المصدرCred. كائن PSCredential للاتصال بالخادم المصدر.
- تارجت كريد. كائن PSCredential للاتصال بالخادم الهدف.
- SelectedDatabase. كائن AzDataMigrationSelectedDB يمثل تعيين قاعدة البيانات المصدر والهدف.
- BackupFileShare. كائن FileShare يمثل مشاركة الشبكة المحلية التي يمكن لخدمة ترحيل قاعدة بيانات Azure أخذ النسخ الاحتياطية لقاعدة البيانات المصدر إليها.
- BackupBlobSasUri. SAS URI الذي يوفر لخدمة ترحيل قاعدة بيانات Azure إمكانية الوصول إلى حاوية حساب التخزين التي تقوم الخدمة بتحميل ملفات النسخ الاحتياطي إليها. تعلم كيفية الحصول على عنوان URI الخاص بـ SAS لحاوية الكائن الثنائي كبير الحجم.
- تسجيلات الدخول المحددة. قائمة بعمليات تسجيل الدخول المحددة للترحيل.
- SelectedAgentJobs. قائمة بوظائف الوكيل المحددة للترحيل.
- تسجيلات الدخول المحددة. قائمة بعمليات تسجيل الدخول المحددة للترحيل.
- SelectedAgentJobs. قائمة بوظائف الوكيل المحددة للترحيل.
إنشاء مهمة ترحيل وبدء تشغيلها
يقوم المثال التالي بإنشاء مهمة ترحيل دون اتصال وبدء تشغيلها باسم myDMSTask:
$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 `
مراقبة الترحيل
لمراقبة الترحيل، قم بتنفيذ المهام التالية.
دمج جميع تفاصيل الترحيل في متغير يسمى $CheckTask.
لدمج تفاصيل الترحيل مثل الخصائص والحالة ومعلومات قاعدة البيانات المقترنة بالترحيل، استخدم مقتطف التعليمات البرمجية التالي:
$CheckTask= Get-AzDataMigrationTask -ResourceGroupName myResourceGroup ` -ServiceName $service.Name ` -ProjectName $project.Name ` -Name myDMSTask ` -ResultType DatabaseLevelOutput ` -Expand Write-Host ‘$CheckTask.ProjectTask.Properties.Output’$CheckTaskاستخدم المتغير للحصول على الحالة الحالية لمهمة الترحيل.لاستخدام
$CheckTaskالمتغير للحصول على الحالة الحالية لمهمة الترحيل، يمكنك مراقبة مهمة الترحيل قيد التشغيل عن طريق الاستعلام عن خاصية الحالة للمهمة، كما هو موضح في المثال التالي: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
بعد اكتمال الترحيل، يمكنك حذف مثيل خدمة ترحيل قاعدة بيانات Azure:
Remove-AzDms -ResourceGroupName myResourceGroup -ServiceName MyDMS
الخطوات التالية
تعرف على المزيد حول خدمة ترحيل قاعدة بيانات Azure في المقالة ما هي خدمة ترحيل قاعدة بيانات Azure؟.
للحصول على معلومات حول سيناريوهات الترحيل الإضافية (أزواج المصدر/الهدف)، راجع دليل ترحيل قاعدة بيانات Microsoft.