ترحيل قاعدة بيانات SQL Server إلى قاعدة بيانات Azure SQL باستخدام Azure PowerShell
في هذه المقالة، يمكنك ترحيل قاعدة بيانات Adventureworks2012 المستعادة إلى مثيل محلي من SQL Server عام 2016 أو أعلى إلى قاعدة بيانات Azure SQL باستخدام Microsoft Azure PowerShell. يمكنك ترحيل قواعد البيانات من مثيل SQL Server إلى قاعدة بيانات Azure SQL باستخدام Az.DataMigration الوحدة النمطية في Microsoft Azure PowerShell.
ستتعلم في هذا المقال طريقة إجراء ما يلي:
- إنشاء مجموعة موارد.
- قم بإنشاء مثيل لخدمة ترحيل قاعدة بيانات Azure.
- أنشئ مشروع ترحيل في مثيل خدمة ترحيل قاعدة بيانات Azure.
- تشغيل الترحيل.
المتطلبات الأساسية
لإكمال هذه الخطوات، أنت بحاجة إلى:
- SQL Server 2016 أو أعلى (أي إصدار)
- لتمكين بروتوكول TCP/IP، الذي يتم تعطيله افتراضيا مع تثبيت SQL Server Express. تمكين بروتوكول TCP/IP باتباع المقالة تمكين أو تعطيل بروتوكول شبكة اتصال خادم.
- لتكوين جدار حماية Windows للوصول إلى محرك قاعدة البيانات.
- A Azure SQL Database instance. يمكنك إنشاء مثيل قاعدة بيانات Azure SQL باتباع التفاصيل الواردة في المقالة إنشاء قاعدة بيانات في قاعدة بيانات Azure SQL في مدخل Azure.
- مساعد ترحيل البيانات الإصدار 3.3 أو إصدار أحدث.
- لإنشاء شبكة Microsoft Azure الظاهرية باستخدام نموذج نشر Azure Resource Manager، الذي يوفر لخدمة ترحيل قاعدة بيانات Azure إمكانية الاتصال من موقع إلى موقع بخوادم المصدر المحلية باستخدام ExpressRoute أو VPN.
- لإكمال تقييم قاعدة البيانات المحلية وترحيل المخطط باستخدام "مساعد ترحيل البيانات" كما هو موضح في المقالة إجراء تقييم ترحيل SQL Server
- لتنزيل الوحدة النمطية Az.DataMigration وتثبيتها من معرض PowerShell باستخدام cmdlet PowerShell لتثبيت الوحدة النمطية؛ تأكد من فتح نافذة الأوامر PowerShell باستخدام تشغيل كمسؤول.
- للتأكد من أن بيانات الاعتماد المستخدمة للاتصال بالمصدر SQL Server المثيل لديه إذن CONTROL SERVER.
- للتأكد من أن بيانات الاعتماد المستخدمة للاتصال بمثيل قاعدة بيانات Azure SQL الهدف يحتوي على إذن قاعدة بيانات CONTROL على قواعد بيانات قاعدة بيانات Azure SQL الهدف.
- اشتراك Azure. إذا لم يكن لديك حساب ، فقم بإنشاء حساب مجاني قبل البدء.
قم بتسجيل الدخول إلى اشتراك 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 المدعوم حاليا هو GeneralPurpose_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. يتوقع cmdlet هذا المعلمات التالية:
- نوع الخادم. نوع اتصال قاعدة البيانات المطلوب، على سبيل المثال، SQL أو Oracle أو MySQL. استخدم SQL SQL Server SQL وAzure.
- مصدر البيانات. اسم أو عنوان IP لمثيل SQL Server أو قاعدة بيانات Azure SQL.
- AuthType. نوع المصادقة للاتصال، والذي يمكن أن يكون إما SqlAuthentication أو WindowsAuthentication.
- تقوم معلمة TrustServerCertificate بتعيين قيمة تشير إلى ما إذا كانت القناة مشفرة أثناء تجاوز السير في سلسلة الشهادات للتحقق من صحة الثقة. يمكن أن تكون القيمة صحيحة أو خاطئة.
يقوم المثال التالي بإنشاء كائن "معلومات الاتصال" SQL Server المصدر يسمى MySourceSQLServer باستخدام مصادقة sql:
$sourceConnInfo = New-AzDmsConnInfo -ServerType SQL `
-DataSource MySourceSQLServer `
-AuthType SqlAuthentication `
-TrustServerCertificate:$true
يوضح المثال التالي إنشاء "معلومات الاتصال" لخادم يسمى SQLAzureTarget باستخدام مصادقة sql:
$targetConnInfo = New-AzDmsConnInfo -ServerType SQL `
-DataSource "sqlazuretarget.database.windows.net" `
-AuthType SqlAuthentication `
-TrustServerCertificate:$false
توفير قواعد بيانات لمشروع الترحيل
إنشاء قائمة بالكائنات AzDataMigrationDatabaseInfo التي تحدد قواعد البيانات كجزء من مشروع ترحيل قاعدة بيانات Azure التي يمكن توفيرها كمعلمة لإنشاء المشروع. يمكن استخدام Cmdlet New-AzDataMigrationDatabaseInfo لإنشاء AzDataMigrationDatabaseInfo.
ينشئ AzDataMigrationDatabaseInfo المثال التالي مشروعا لقاعدة بيانات AdventureWorks2016 ويضيفه إلى القائمة التي سيتم توفيرها كمعلمة لإنشاء المشروع.
$dbInfo1 = New-AzDataMigrationDatabaseInfo -SourceDatabaseName AdventureWorks2016
$dbList = @($dbInfo1)
إنشاء كائن مشروع
أخيرا ، يمكنك إنشاء مشروع ترحيل قاعدة بيانات Azure يسمى MyDMSProject الموجود في شرق الولايات المتحدة باستخدام New-AzDataMigrationProject وإضافة اتصالات المصدر والهدف التي تم إنشاؤها مسبقا وقائمة قواعد البيانات المراد ترحيلها.
$project = New-AzDataMigrationProject -ResourceGroupName myResourceGroup `
-ServiceName $service.Name `
-ProjectName MyDMSProject `
-Location EastUS `
-SourceType SQL `
-TargetType SQLDB `
-SourceConnection $sourceConnInfo `
-TargetConnection $targetConnInfo `
-DatabaseInfo $dbList
إنشاء مهمة ترحيل وبدء تشغيلها
وأخيرا، قم بإنشاء مهمة ترحيل قاعدة بيانات Azure وبدء تشغيلها. تتطلب مهمة ترحيل قاعدة بيانات 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)
إنشاء خريطة جدول وتحديد معلمات المصدر والهدف للترحيل
معلمة أخرى مطلوبة للترحيل هي تعيين الجداول من المصدر إلى الهدف المراد ترحيله. إنشاء قاموس للجداول يوفر تعيينا بين الجداول المصدر والجدول المستهدف للترحيل. يوضح المثال التالي التعيين بين الجداول المصدر والهدف مخطط الموارد البشرية لقاعدة بيانات AdventureWorks 2016.
$tableMap = New-Object 'system.collections.generic.dictionary[string,string]'
$tableMap.Add("HumanResources.Department", "HumanResources.Department")
$tableMap.Add("HumanResources.Employee","HumanResources.Employee")
$tableMap.Add("HumanResources.EmployeeDepartmentHistory","HumanResources.EmployeeDepartmentHistory")
$tableMap.Add("HumanResources.EmployeePayHistory","HumanResources.EmployeePayHistory")
$tableMap.Add("HumanResources.JobCandidate","HumanResources.JobCandidate")
$tableMap.Add("HumanResources.Shift","HumanResources.Shift")
الخطوة التالية هي تحديد قواعد البيانات المصدر والهدف وتوفير تعيين الجدول للترحيل كمعلمة باستخدام New-AzDmsSelectedDB cmdlet، كما هو موضح في المثال التالي:
$selectedDbs = New-AzDmsSelectedDB -MigrateSqlServerSqlDb -Name AdventureWorks2016 `
-TargetDatabaseName AdventureWorks2016 `
-TableMap $tableMap
إنشاء مهمة الترحيل وبدء تشغيلها
New-AzDataMigrationTask استخدم cmdlet لإنشاء مهمة ترحيل وبدء تشغيلها. يتوقع cmdlet هذا المعلمات التالية:
- نوع المهمة. نوع مهمة الترحيل المراد إنشاؤها SQL Server إلى Azure SQL من المتوقع نوع ترحيل قاعدة البيانات MigrateSqlServerSqlDb.
- اسم مجموعة الموارد. اسم مجموعة موارد Azure لإنشاء المهمة.
- اسم الخدمة. مثيل Azure Database Migration Service لإنشاء المهمة.
- اسم المشروع. اسم مشروع Azure Database Migration Service لإنشاء المهمة.
- اسم المهمة. اسم المهمة المراد إنشاؤها.
- SourceConnection. كائن AzDmsConnInfo يمثل اتصال SQL Server المصدر.
- تارجت كونكشن. كائن AzDmsConnInfo يمثل هدف Azure SQL اتصال قاعدة البيانات.
- المصدرCred. كائن PSCredential للاتصال بالخادم المصدر.
- تارجت كريد. كائن PSCredential للاتصال بالخادم الهدف.
- SelectedDatabase. كائن AzDataMigrationSelectedDB يمثل تعيين قاعدة البيانات المصدر والهدف.
- التحقق من صحة المخطط. (اختياري، معلمة التبديل) بعد الترحيل، إجراء مقارنة لمعلومات المخطط بين المصدر والهدف.
- DataIntegrityValidation. (اختياري، معلمة التبديل) بعد الترحيل، يقوم بإجراء التحقق من سلامة البيانات استنادا إلى المجموع الاختباري بين المصدر والهدف.
- QueryAnalysisValidation. (اختياري، معلمة التبديل) بعد الترحيل ، يقوم بإجراء تحليل استعلام سريع وذكي عن طريق استرداد الاستعلامات من قاعدة البيانات المصدر وتنفيذها في الهدف.
يقوم المثال التالي بإنشاء مهمة ترحيل تسمى myDMSTask وبدء تشغيلها:
$migTask = New-AzDataMigrationTask -TaskType MigrateSqlServerSqlDb `
-ResourceGroupName myResourceGroup `
-ServiceName $service.Name `
-ProjectName $project.Name `
-TaskName myDMSTask `
-SourceConnection $sourceConnInfo `
-SourceCred $sourceCred `
-TargetConnection $targetConnInfo `
-TargetCred $targetCred `
-SelectedDatabase $selectedDbs `
يقوم المثال التالي بإنشاء وبدء نفس مهمة الترحيل كما هو موضح أعلاه ولكنه يقوم أيضا بتنفيذ جميع عمليات التحقق الثلاثة:
$migTask = New-AzDataMigrationTask -TaskType MigrateSqlServerSqlDb `
-ResourceGroupName myResourceGroup `
-ServiceName $service.Name `
-ProjectName $project.Name `
-TaskName myDMSTask `
-SourceConnection $sourceConnInfo `
-SourceCred $sourceCred `
-TargetConnection $targetConnInfo `
-TargetCred $targetCred `
-SelectedDatabase $selectedDbs `
-SchemaValidation `
-DataIntegrityValidation `
-QueryAnalysisValidation `
مراقبة الترحيل
يمكنك مراقبة مهمة الترحيل قيد التشغيل عن طريق الاستعلام عن خاصية الحالة للمهمة كما هو موضح في المثال التالي:
if (($mytask.ProjectTask.Properties.State -eq "Running") -or ($mytask.ProjectTask.Properties.State -eq "Queued"))
{
write-host "migration task running"
}
حذف مثيل DMS
بعد اكتمال الترحيل، يمكنك حذف مثيل Azure DMS:
Remove-AzDms -ResourceGroupName myResourceGroup -ServiceName MyDMS
الخطوة التالية
- راجع إرشادات الترحيل في دليل ترحيل قاعدة بيانات Microsoft.