KB3095156 - الإصلاح: الخطأ 9002 والخطأ 3052 عند محاولة إضافة ملف سجل أو نسخه احتياطيا في SQL Server 2012 أو SQL Server 2014

ينطبق على
SQL Server 2012 Developer SQL Server 2012 Enterprise SQL Server 2012 Standard SQL Server 2014 Developer - duplicate (do not use) SQL Server 2014 Enterprise - duplicate (do not use) SQL Server 2014 Standard - duplicate (do not use)

الأعراض

افترض أنك تستخدم مجموعة قابلية وصول عالية التوفر AlwaysOn في قاعدة بيانات Microsoft SQL Server 2012 أو SQL Server 2014، وأن هناك معاملة نشطة كبيرة مفتوحة وتتطلب مساحة سجل إضافية. عندما لا يمكن زيادة ملف السجل لأحد الأسباب التالية، تفشل المعاملة.

  • عدم وجود مساحة إضافية للملف
  • تم تكوين ملف السجل لعدم النمو
  • وصل ملف السجل إلى الحد الأقصى للحجم الذي تم تكوينه

بالإضافة إلى ذلك، تتلقى رسالة الخطأ التالية:

ملاحظة

خطأ: 9002، الخطورة: 17، الحالة: 9.
سجل المعاملات لقاعدة البيانات "<اسم >قاعدة البيانات" ممتلئ بسبب "LOG_BACKUP".

بعد تشغيل نسخة احتياطية من السجل، تتلقى رسالة خطأ 9002 أخرى:

ملاحظة

خطأ: 9002، الخطورة: 17، الحالة: 9.
سجل المعاملات لقاعدة البيانات "<اسم >قاعدة البيانات" ممتلئ بسبب "ACTIVE_TRANSACTION".

بعد نسخة احتياطية أخرى من السجل، ستتلقى بعد ذلك رسالة خطأ 9002 أخرى متبوعة برسالة خطأ 5901:

ملاحظة

خطأ: 9002، الخطورة: 17، الحالة: 9.
سجل المعاملات لقاعدة البيانات "<اسم >قاعدة البيانات" ممتلئ بسبب "AVAILABILITY_REPLICA".

      

ملاحظة

تعذر كتابة سجل نقطة تحقق في اسم >قاعدة بيانات قاعدة البيانات< لأن السجل خارج المساحة. اتصل بمسؤول قاعدة البيانات لاقتطاع السجل أو تخصيص مساحة إضافية لملفات سجل قاعدة البيانات.
خطأ: 5901، الخطورة: 16، الحالة: 1.
فشلت وحدة استرداد واحدة أو أكثر تنتمي إلى "<اسم >قاعدة البيانات" في إنشاء نقطة تحقق. يحدث هذا عادة بسبب نقص موارد النظام مثل القرص أو الذاكرة، أو في بعض الحالات بسبب تلف قاعدة البيانات. افحص الإدخالات السابقة في سجل الأخطاء للحصول على معلومات أكثر تفصيلا حول هذا الفشل.

عند أخذ نقطة التحقق اللاحقة أو النسخ الاحتياطية للسجل أثناء التراجع عن المعاملة، قد تتلقى رسالة الخطأ التالية:

ملاحظة

Msg 3052، المستوى 16، الحالة 1، السطر 4
تعذر على BACKUP LOG تسجيل التحديثات لقاعدة البيانات "<اسم >قاعدة البيانات". ستكون النسخ الاحتياطية للسجلات اللاحقة مطلوبة للتقدم بنقطة النسخ الاحتياطي من "<LSN id 1>" إلى "<LSN id 2>" بعد توفير مساحة السجل لتسجيلها.

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

الدقة

تم إصلاح المشكلة لأول مرة في التحديث التراكمي التالي من SQL Server:

التوصية: تثبيت آخر تحديث تراكمي SQL Server

يحتوي كل تحديث تراكمي جديد SQL Server على جميع الإصلاحات العاجلة وجميع إصلاحات الأمان التي تم تضمينها مع التحديث التراكمي السابق. نوصي بتنزيل آخر التحديثات التراكمية وتثبيتها SQL Server:

      

الحل البديل

يمكنك استخدام الحل البديل التالي لاقتطاع السجلات واستئناف النشاط.

  1. تحقق من كل نسخة متماثلة ثانوية للتحقق من تطابق last_hardened_lsn النسخة المتماثلة الثانوية (راجع sys.dm_hadr_database_replica_states) مع last_hardened_lsn النسخة المتماثلة الأساسية. يمكنك القيام بذلك عن طريق تشغيل الاستعلام التالي المتصل بمثيل النسخة المتماثلة الأساسية

    SELECT ags.name as AGGroupName,
        ar.replica_server_name as InstanceName,
        hars.role_desc,
        db_name(drs.database_id)as DBName,
        drs.last_hardened_lsn, drs.log_send_queue_size,
        drs.synchronization_state_desc as SyncState,
        ar.availability_mode_desc as SyncMode,
        CASE drs.is_local WHEN 1 THEN drs.database_id ELSE NULL END as database_id
        FROM sys.dm_hadr_database_replica_states drs
        LEFT JOIN sys.availability_replicas ar ON drs.replica_id = ar.replica_id
        LEFT JOIN sys.availability_groups ags  ON ar.group_id = ags.group_id
        LEFT JOIN sys.dm_hadr_availability_replica_states hars
            ON ar.group_id = hars.group_id and ar.replica_id = hars.replica_id
          WHERE db_name(drs.database_id) = '<database name>'
    
  2. على النسخة المتماثلة الأساسية

    • إزالة قاعدة البيانات من مجموعة التوفر.
    • أعد إضافة قاعدة البيانات إلى مجموعة التوفر.
  3. في كل نسخة متماثلة ثانوية

    • أعد إضافة قاعدة البيانات إلى مجموعة التوفر.

من خلال إزالة قاعدة البيانات من مجموعة التوفر، سيتم اقتطاع سجلاتها على الفور وتحرير مساحة السجل.

إذا كانت last_hardened_lsn على كل نسخة متماثلة ثانوية مطابقة للنسخة المتماثلة الأساسية، ولم يتم أخذ أي نسخ احتياطية للسجل خلال وقت إزالة قاعدة البيانات من مجموعة التوفر وإعادة إضافة قاعدة البيانات على كل نسخة ثانوية، فستتم إعادة إضافة النسخة المتماثلة الثانوية بنجاح دون أي أخطاء أو الاضطرار إلى استعادة النسخ الاحتياطية للسجل على الثانوي.

إذا لم تكن النسخة المتماثلة الثانوية محدثة مع النسخة المتماثلة الأساسية وكان عليك إزالة قاعدة البيانات من مجموعة التوفر قبل أن تتمكن النسخة الثانوية من اللحاق بها، فقد تحتاج هذه النسخة المتماثلة الثانوية إلى استعادة النسخ الاحتياطية للسجل للحاق بها قبل إعادة إضافتها إلى مجموعة التوفر، أو إسقاط قاعدة البيانات على النسخة المتماثلة الثانوية وإعادة وضعها مع النسخة الاحتياطية الكاملة وقاعدة بيانات سجل المعاملات.

الحالة

لقد أكدت Microsoft على أن هذه مشكلة في منتجات Microsoft المُدرجة في القسم "ينطبق على".