التشغيل السريع: استيراد ملف BACPAC إلى قاعدة بيانات في Azure SQL Database أو Azure SQL Managed Instance

ينطبق على: قاعدة بيانات Azure SQL مثيل Azure SQL المُدار

يمكنك استيراد قاعدة بيانات SQL Server إلى Azure SQL Database أو SQL Managed Instance باستخدام ملف BACPAC. يمكنك استيراد البيانات من ملف BACPAC المخزن في مخزن Azure Blob (التخزين القياسي فقط) أو من مخزن المحلي في موقع محلي. لتعظيم سرعة الاستيراد من خلال توفير موارد أكثر وأسرع، قم بتوسيع قاعدة البيانات الخاصة بك إلى مستوى خدمة وحجم حساب أعلى أثناء عملية الاستيراد. يمكنك بعد ذلك تقليص حجمها بعد استردادها بنجاح.

ملاحظة

يعتمد مستوى توافق قاعدة البيانات المستوردة على مستوى توافق قاعدة البيانات المصدر.

هام

بعد استيراد قاعدة بياناتك، يمكنك اختيار تشغيل قاعدة البيانات في مستوى التوافق الحالي (المستوى 100 لقاعدة بيانات AdventureWorks2008R2) أو على مستوى أعلى. لمزيد من المعلومات حول الآثار والخيارات لتشغيل قاعدة بيانات على مستوى توافق محدد، راجع مستوى توافق ALTER DATABASE. راجع أيضاً ALTER DATABASE SCOPED CONFIGURATION للحصول على معلومات حول الإعدادات الإضافية لمستوى قاعدة البيانات المتعلقة بمستويات التوافق.

استخدام مدخل Microsoft Azure

شاهد هذا الفيديو للاطلاع على كيفية الاستيراد من ملف BACPAC في مدخل Microsoft Azure أو تابع القراءة أدناه:

يدعم مدخل Azureفقط إنشاء قاعدة بيانات واحدة في قاعدة بيانات Azure SQL وفقط من ملف BACPAC المُخزَّن في موقع تخزين Azure Blob.

لترحيل قاعدة بيانات إلى Azure SQL Managed Instance من ملف BACPAC، استخدم SQL Server Management Studio أو SQLPackage، باستخدام مدخل Microsoft Azure أو Azure PowerShell غير معتمد حاليا.

ملاحظة

تحتاج الأجهزة التي تعالج طلبات الاستيراد/التصدير المرسلة من خلال مدخل Microsoft Azure أو PowerShell إلى تخزين ملف BACPAC بالإضافة إلى الملفات المؤقتة التي تم إنشاؤها بواسطة Data-Tier Application Framework (DacFX). تختلف مساحة القرص المطلوبة بشكل ملحوظ بين قواعد البيانات ذات الحجم المماثل ويمكن أن تتطلب مساحة على القرص تصل إلى 3 أضعاف حجم قاعدة البيانات. الأجهزة التي تقوم بتشغيل طلب الاستيراد / التصدير لها مساحة قرص محلي تبلغ 450 غيغابايت فقط. ونتيجة لذلك، قد تفشل بعض الطلبات مع الخطأ There is not enough space on the disk. في هذه الحالة، يكون الحل البديل هو تشغيل sqlpackage.exe على جهاز به بمساحة كافية للقرص المحلي. نحن نشجع استخدام SqlPackage لاستيراد/ تصدير قواعد بيانات أكبر من 150 جيجابايت لتجنب هذه المشكلة.

  1. للاستيراد من ملف BACPAC إلى قاعدة بيانات مفردة جديدة باستخدام مدخل Microsoft Azure، افتح صفحة الخادم المناسبة ثم، حدد، من شريط الأدوات، استيراد قاعدة البيانات.

    Database import1

  2. حدد حساب التخزين والحاوية لملف BACPAC ثم حدد ملف BACPAC الذي تريد الاستيراد منه.

  3. حدد حجم قاعدة البيانات الجديد (عادةً ما يكون نفس حجم الأصل) وحدد بيانات اعتماد SQL Server الوجهة. للحصول على قائمة بالقيم المحتملة لقاعدة بيانات جديدة في Azure SQL Database، راجع إنشاء قاعدة بيانات.

    Database import2

  4. انقر فوق موافق.

  5. لمراقبة تقدم عملية استيراد، افتح صفحة خادم قاعدة البيانات، ومن "Settings" ، حدد "Import/Export history" . عند نجاح الاستيراد، تكون حالته ⁧⁩Completed⁧⁩.

    Database import status

  6. للتحقق من أن قاعدة البيانات موجودة فعلياً على الخادم، حدد "SQL databases" وتحقق من أن قاعدة البيانات الجديدة "Online" .

استخدام SqlPackage

لاستيراد قاعدة بيانات SQL Server باستخدام أداة سطر الأوامر SqlPackage، راجع استيراد المعلمات والخصائص. SQL Server Management Studio وSQL Server Data Tools Visual Studio يشملان SqlPackage. يمكنك أيضاً تحميل أحدث إصدار لـSqlPackage من مركز تحميل Microsoft.

بالنسبة للمقياس والأداء، نوصي باستخدام SqlPackage في معظم بيئات الإنتاج بدلاً من استخدام مدخل Microsoft Azure. للحصول على مدونة SQL Server Customer Advisory Team حول الترحيل باستخدام BACPAC الملفات، راجع الترحيل من SQL Server إلى Azure SQL Database باستخدام ملفات BACPAC.

تحدد دعائم نموذج التوفير المستند إلى DTU قيم الحد الأقصى لحجم قاعدة البيانات لكل مستوى. عند استيراد قاعدة بيانات استخدم إحدى هذه القيم المعتمدة.

يسترد الأمر SqlPackage التالي قاعدة البيانات AdventureWorks2008R2 من المخزن المحلي إلى خادم SQL المنطقي المسمى mynewserver20170403. يُنشئ قاعدة بيانات جديدة تسمى myMigratedDatabase مع مستوى خدمة Premium وهدف خدمة P6. قم بتغيير هذه القيم بما يتناسب مع بيئتك.

sqlpackage.exe /a:import /tcs:"Data Source=<serverName>.database.windows.net;Initial Catalog=<migratedDatabase>;User Id=<userId>;Password=<password>" /sf:AdventureWorks2008R2.bacpac /p:DatabaseEdition=Premium /p:DatabaseServiceObjective=P6

هام

للاتصال بـAzure SQL Database من خلف جدار حماية الشركة، يجب أن يكون مدخل جدار الحماية 1433 مفتوحاً. للاتصال بـSQL Managed Instance، يجب أن يكون لديك اتصال من النقطة إلى الموقع أو اتصال توجيه سريع.

يوضح هذا المثال كيفية استيراد قاعدة بيانات باستخدام SqlPackage مع Active Directory Universal Authentication.

sqlpackage.exe /a:Import /sf:testExport.bacpac /tdn:NewDacFX /tsn:apptestserver.database.windows.net /ua:True /tid:"apptest.onmicrosoft.com"

استخدام PowerShell

ملاحظة

لا يدعم SQL Managed Instance حالياً ترحيل قاعدة بيانات إلى قاعدة بيانات مثيل من ملف BACPAC باستخدام Azure PowerShell. للاستيراد إلى SQL Managed Instance، استخدم SQL Server Management Studio أو SQLPackage.

ملاحظة

تحتاج الأجهزة التي تعالج طلبات الاستيراد/التصدير المقدمة من خلال المدخل أو PowerShell إلى تخزين ملف bacpac بالإضافة إلى الملفات المؤقتة التي تم إنشاؤها بواسطة Data-Tier Application Framework (DacFX). تختلف مساحة القرص المطلوبة بشكل ملحوظ بين قواعد البيانات ذات الحجم المماثل ويمكن أن تتطلب مساحة تصل إلى 3 أضعاف حجم قاعدة البيانات. الأجهزة التي تقوم بتشغيل طلب الاستيراد / التصدير لها مساحة قرص محلي تبلغ 450 غيغابايت فقط. نتيجة لذلك، قد تفشل بعض الطلبات مع خطأ "لا توجد مساحة كافية على القرص". في هذه الحالة، يكون الحل البديل هو تشغيل sqlpackage.exe على جهاز به بمساحة كافية للقرص المحلي. عند استيراد/تصدير قواعد بيانات أكبر من 150 جيجابايت، استخدم SqlPackage لتجنب هذه المشكلة.

هام

لا تزال الوحدة النمطيةPowerShell Azure Resource Manager مدعومة، ولكن جميع التطويرات المستقبلية تكون للوحدة النمطية Az.Sql. ستستمر الوحدة النمطية AzureRM في تلقي إصلاحات الأخطاء حتى ديسمبر 2020 على الأقل. تتطابق وسائط الأوامر في الوحدة النمطية Az وفي الوحدات النمطية AzureRm بشكل كبير. لمعرفة المزيد حول تطابقها، اطّلع على تقديم الوحدة النمطية Azure PowerShell Az الجديدة.

استخدم New-AzSqlDatabaseImport cmdlet لإرسال طلب استيراد قاعدة بيانات إلى Azure. بناء على حجم قاعدة البيانات، قد يستغرق الاستيراد بعض الوقت لاستكماله. تحدد دعائم نموذج التوفير المستند إلى DTU قيم الحد الأقصى لحجم قاعدة البيانات لكل مستوى. عند استيراد قاعدة بيانات استخدم إحدى هذه القيم المعتمدة.

$importRequest = New-AzSqlDatabaseImport -ResourceGroupName "<resourceGroupName>" `
    -ServerName "<serverName>" -DatabaseName "<databaseName>" `
    -DatabaseMaxSizeBytes "<databaseSizeInBytes>" -StorageKeyType "StorageAccessKey" `
    -StorageKey $(Get-AzStorageAccountKey `
        -ResourceGroupName "<resourceGroupName>" -StorageAccountName "<storageAccountName>").Value[0] `
        -StorageUri "https://myStorageAccount.blob.core.windows.net/importsample/sample.bacpac" `
        -Edition "Standard" -ServiceObjectiveName "P6" `
        -AdministratorLogin "<userId>" `
        -AdministratorLoginPassword $(ConvertTo-SecureString -String "<password>" -AsPlainText -Force)

يمكنك استخدام Get-AzSqlDatabaseImportExportStatus cmdlet للتحقق من سير عمل الاستيراد. تشغيل cmdlet مباشرة بعد الطلب عادة ما يُرجع Status: InProgress. يتم إكمال الاستيراد عند رؤية Status: Succeeded.

$importStatus = Get-AzSqlDatabaseImportExportStatus -OperationStatusLink $importRequest.OperationStatusLink

[Console]::Write("Importing")
while ($importStatus.Status -eq "InProgress") {
    $importStatus = Get-AzSqlDatabaseImportExportStatus -OperationStatusLink $importRequest.OperationStatusLink
    [Console]::Write(".")
    Start-Sleep -s 10
}

[Console]::WriteLine("")
$importStatus

تلميح

للحصول على مثال آخر للبرنامج النصي، راجع استيراد قاعدة بيانات من ملف BACPAC.

إلغاء طلب الاستيراد

استخدم عمليات قاعدة البيانات - إلغاء واجهة برمجة التطبيقات أو أمر PowerShell Stop-AzSqlDatabaseActivity، هنا مثال على أمر powershell.

Stop-AzSqlDatabaseActivity -ResourceGroupName $ResourceGroupName -ServerName $ServerName -DatabaseName $DatabaseName -OperationId $Operation.OperationId

التقييدات

  • لا يُدعم الاستيراد إلى قاعدة بيانات في مجموعات مرنة. يمكنك استيراد البيانات إلى قاعدة بيانات واحدة ثم نقل قاعدة البيانات إلى مجموعة مرنة.
  • لا تعمل خدمة التصدير والاستيراد عند ضبط السماح بالوصول إلى خدمات Azure على وضع إيقاف التشغيل. ومع ذلك يمكنك حل المشكلة عن طريق تشغيل sqlpackage.exe يدويا من Azure VM أو تنفيذ التصدير مباشرة في التعليمات البرمجية باستخدام DACFx API.
  • لا يدعم الاستيراد تحديد تكرار تخزين النسخ احتياطي أثناء إنشاء قاعدة بيانات جديدة ويُنشئ مع التكرار الافتراضي لتخزين النسخ الاحتياطي المتكرر جغرافياً. الحل البديل، أولاً أنشئ قاعدة بيانات فارغة مع تكرار تخزين النسخ الاحتياطي المطلوب باستخدام مدخل Microsoft Azure أو PowerShell ثم استرد BACPAC إلى قاعدة البيانات الفارغة هذه.
  • التخزين خلف جدار الحماية غير مدعوم حالياً.

استيراد باستخدام المعالجات

يمكنك أيضاً استخدام هذه المعالجات.

الخطوات التالية