تصدير إلى ملف BACPAC – قاعدة بيانات Azure SQL ومثيل Azure SQL المُدار

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

عندما تحتاج إلى تصدير قاعدة بيانات للأرشفة أو للانتقال إلى نظام أساسي آخر، يمكنك تصدير مخطط قاعدة البيانات والبيانات إلى ملف BACPAC. ملف BACPAC هو ملف ZIP بامتداد BACPAC يحتوي على بيانات التعريف والبيانات من قاعدة البيانات. يمكن تخزين ملف BACPAC في تخزين كائن ثنائي كبير الحجم في Azure أو في التخزين المحلي في موقع محلي واستيراده لاحقًا مرة أخرى إلى قاعدة بيانات Azure SQL أو مثيل Azure SQL المُدار أو مثيل SQL Server.

الاعتبارات

  • لكي يكون التصدير متسقاً في المعاملات، يجب عليك التأكد إما من عدم حدوث أي نشاط كتابة أثناء التصدير، أو أنك تقوم بالتصدير من نسخة متسقة للمعاملات من قاعدة البيانات الخاصة بك.

  • إذا كنت تقوم بالتصدير إلى تخزين كائن ثنائي كبير الحجم، فإن الحد الأقصى لحجم ملف BACPAC هو 200 جيجابايت. لأرشفة ملف BACPAC أكبر، قم بالتصدير إلى التخزين المحلي.

  • لا يتم دعم تصدير ملف BACPAC إلى مساحة تخزين Azure premium باستخدام الطرق التي تمت مناقشتها في هذه المقالة.

  • التخزين خلف جدار الحماية غير مدعوم حالياً.

  • التخزين غير القابل للتغيير غير مدعوم حاليًا.

  • يجب أن يكون اسم ملف التخزين أو قيمة الإدخال لـ StorageURI أقل من 128 حرفًا ولا يمكن أن ينتهي بـ "." ولا يمكن أن يحتوي على أحرف خاصة مثل حرف مسافة أو '<,>,*,%,&,:,,/,?'.

  • إذا تجاوزت عملية التصدير 20 ساعة، فقد يتم إلغاؤها. لرفع حجم الأداء أثناء التصدير، يمكنك:

    • زيادة حجم الحساب مؤقتاً.
    • أوقف جميع نشاطات القراءة والكتابة أثناء التصدير.
    • استخدم فهرساً متفاوتاً بقيم غير فارغة في جميع الجداول الكبيرة. دون فهارس مجمعة، قد يفشل التصدير إذا استغرق وقتاً أطول من 6-12 ساعة. هذا لأن خدمة التصدير تحتاج إلى إكمال فحص الجداول لمحاولة تصدير الجدول بأكمله. من الطرق الجيدة لتحديد ما إذا كانت الجداول الخاصة بك محسنة للتصدير هي تشغيل DBCC SHOW_STATISTICS والتأكد من أن RANGE_HI_KEY ليس فارغاً وقيمته لها توزيع جيد. للحصول على التفاصيل، راجع DBCC SHOW_STATISTICS .
  • لا يدعم مثيل Azure SQL المُدار حاليًا تصدير قاعدة بيانات إلى ملف BACPAC باستخدام مدخل Microsoft Azure أو Azure PowerShell. لتصدير مثيل مُدار إلى ملف BACPAC، استخدم Management Studio أو SQLPackage.

  • لقواعد البيانات في مستوى الخدمة Hyperscale، تصدير/استيراد BACPAC من مدخل Microsoft Azure، من PowerShell باستخدام New-AzSqlDatabaseExport أو New-AzSqlDatabaseImport من Azure CLI باستخدام تصدير az sql dbواستيراد az sql db ومن واجهة برمجة تطبيقات REST غير مدعوم. يتم دعم استيراد/تصدير Bacpac لقواعد بيانات Hyperscale الأصغر (حتى 200 GB) باستخدام Management Studio وSqlPackage الإصدار 18.4 والإصدارات الأحدث. بالنسبة لقواعد البيانات الأكبر، قد يستغرق تصدير/استيراد BACPAC وقتًا طويلاً، وقد يفشل لأسباب مختلفة.

ملاحظة

لا يُقصد باستخدام BACPACs في عمليات النسخ الاحتياطي والاستعادة. يقوم Azure تلقائياً بإنشاء نُسخ احتياطية لكل قاعدة بيانات مستخدم. لمزيد من التفاصيل، راجع نظرة عامة على استمرارية الأعمال و النسخ الاحتياطية لقاعدة بيانات SQL .

مدخل Azure

تصدير BACPAC من قاعدة بيانات من مثيل Azure SQL المُدار أو من قاعدة بيانات في مستوى خدمة Hyperscale باستخدام مدخل Microsoft Azure غير مدعوم حاليًا. راجع الاعتبارات.

ملاحظة

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

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

    Screenshot that highlights the Export button.

  2. حدد اسم ملف BACPAC، وحدد حساب تخزين Azure وحاوية للتصدير، ثم قم بتوفير بيانات الاعتماد المناسبة للوصول إلى قاعدة البيانات المصدر. يلزم هنا تسجيل دخول مسؤول الخادم حتى لو كنت مسؤول Azure، لأن كونك مسؤول Azure لا يعني الحصول على أذونات المسؤول في قاعدة بيانات Azure SQL أو مثيل Azure SQL المُدار.

    Database export

  3. حدد "OK".

  4. لمراقبة تقدم عملية التصدير، افتح الصفحة للخادم الذي يحتوي على قاعدة البيانات التي يتم تصديرها. ضمن إدارة البيانات، حدد سجل الاستيراد / التصدير.

الأداة المساعدة SQLPackage

نوصي باستخدام الأداة المساعدة SQLPackage للقياس والأداء في معظم بيئات الإنتاج. يمكنك تشغيل أوامر sqlpackage.exe متعددة بالتوازي مع مجموعات فرعية من الجداول لتسريع عمليات الاستيراد/التصدير.

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

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

sqlpackage.exe /a:Export /tf:testExport.BACPAC /scs:"Data Source=apptestserver.database.windows.net;Initial Catalog=MyDB;" /ua:True /tid:"apptest.onmicrosoft.com"

SQL Server Management Studio (SSMS)

توفر أحدث إصدارات SQL Server Management Studio معالجاً لتصدير قاعدة بيانات في قاعدة بيانات Azure SQL أو قاعدة بيانات مثيل مُدارة من SQL إلى ملف BACPAC. راجع تصدير تطبيق طبقة البيانات .

PowerShell

تصدير BACPAC من قاعدة بيانات من مثيل Azure SQL المُدار أو من قاعدة بيانات في مستوى خدمة Hyperscale باستخدام PowerShell غير مدعوم حاليًا. راجع الاعتبارات.

استخدم الأمر cmdlet New-AzSqlDatabaseExport لإرسال طلب قاعدة بيانات تصدير إلى خدمة قاعدة بيانات Azure SQL. بناءً على حجم قاعدة البيانات الخاصة بك، قد تستغرق عملية التصدير بعض الوقت حتى تكتمل.

$exportRequest = New-AzSqlDatabaseExport -ResourceGroupName $ResourceGroupName -ServerName $ServerName `
  -DatabaseName $DatabaseName -StorageKeytype $StorageKeytype -StorageKey $StorageKey -StorageUri $BacpacUri `
  -AdministratorLogin $creds.UserName -AdministratorLoginPassword $creds.Password

للتحقق من حالة طلب التصدير، استخدم الأمر cmdlet Get-AzSqlDatabaseImportExportStatus . يؤدي تشغيل هذا cmdlet فوراً بعد الطلب عادةً إلى إرجاع الحالة: قيد التقدم. عندما ترى الحالة: تم النجاح، اكتمل التصدير.

$exportStatus = Get-AzSqlDatabaseImportExportStatus -OperationStatusLink $exportRequest.OperationStatusLink
[Console]::Write("Exporting")
while ($exportStatus.Status -eq "InProgress")
{
    Start-Sleep -s 10
    $exportStatus = Get-AzSqlDatabaseImportExportStatus -OperationStatusLink $exportRequest.OperationStatusLink
    [Console]::Write(".")
}
[Console]::WriteLine("")
$exportStatus

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

استخدم عمليات قاعدة البيانات - إلغاء API أو أوامر PowerShell Stop-AzSqlDatabaseActivity لإلغاء طلب تصدير. فيما يلي مثال على أوامر PowerShell:

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

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