تسجيل دخول المستخدم والأذونات على قاعدة بيانات قد تكون غير صحيحة بعد استعادة قاعدة البيانات


الأعراض


إذا تم استعادة تفريغ قاعدة بيانات SQL Server مستخدم إلى ملقم SQL مختلفة (مثل ملقم احتياطي التشغيل سريع) أو إلى نفس الخادم SQL بعد إعادة إنشاء أو إعادة تحميل إصدار قديم من قاعدة البيانات الرئيسية، قد يكون غير صحيح تسجيل دخول المستخدم والأذونات في قاعدة البيانات.

هذه المشكلة قد تكشف عن نفسها بطرق متعددة:
  • أثناء تسجيل الدخول إلى ملقم 6.x، المستخدمين قد تتلقى الخطأ التالي:
    حالة 4002، 14 مستوى جي إس 1، خادم Microsoft SQL Server، سطر 0
    فشل تسجيل الدخول
    مكتبة DB: تسجيل دخول غير صحيح.
  • أثناء تسجيل الدخول إلى خادم 7.0، يجب على المستخدمين قد تتلقى الخطأ التالي:
    جي إس 18456، المستوى 14 حالة 1،
    فشل تسجيل الدخول للمستخدم '% ls'.
  • أثناء محاولة الوصول إلى الكائنات داخل قاعدة البيانات، يجب على المستخدمين قد تتلقى الخطأ التالي:
    Msg 229، المستوى 14 حالة 1
    إذن %s رفض على الكائن %. * s، قاعدة البيانات %. * s، مالك %.*s
  • أثناء محاولة إنشاء تسجيل دخول ومنح حق الوصول إلى قاعدة البيانات المستعادة، أو إضافة المستخدم إلى قاعدة البيانات، قد تلقيت الخطأ التالي:
    Microsoft SQL إدارة الوجهات السياحية (ODBC SQLState: 42000) خطأ 15023: مستخدم أو دور '% s' موجود مسبقاً في قاعدة البيانات الحالية.
  • قد المستخدمين أذونات على الكائنات التي سبق لم يفعلوا.

السبب


يتم تخزين معلومات تسجيل دخول المستخدم في الجدول syslogins في قاعدة البيانات الرئيسية. بتغيير ملقمات أو بتغيير هذه المعلومات بإعادة إنشاء أو استعادة إصدار قديم من قاعدة البيانات الرئيسية، قد تكون المعلومات تختلف عن تاريخ إنشاء تفريغ قاعدة البيانات المستخدم. في حالة عدم وجود عمليات تسجيل الدخول للمستخدمين، ستتلقى خطأ يشير إلى "فشل تسجيل الدخول" أثناء محاولة تسجيل الدخول إلى الملقم. في حالة وجود تسجيل دخول المستخدم، لكن قيم SUID (ل 6.x) أو SID قيم (7.0) في الصفحة الرئيسية... تختلف syslogins وجدول sysusers في قاعدة بيانات المستخدم، قد يكون لدى المستخدمين أذونات مختلفة عما كان متوقعا في قاعدة بيانات المستخدم.

ملاحظة: إذا كنت تستخدم Microsoft SQL Server 2005، يتم تطبيق جدول syslogins وجدول sysusers بتوافق الآراء. وهذه الآراء هي sys.syslogins و sys.sysusers. لمزيد من المعلومات حول توافق الآراء، راجع الموضوع "توافق آراء (TRANSACT-SQL)" في كتب SQL Server 2005.

الحل البديل


لإيجاد حل بديل لهذه المشكلة، قم بأي مما يلي:
  • إذا كانت البرامج النصية الحالية متوفرة لإضافة تسجيلات الدخول والمستخدمين والأذونات، إسقاط وإعادة إنشائه من البرامج النصية. للحصول على أمثلة حول استخدام البرامج النصية لنقل تسجيلات الدخول بين الملقمات، راجع مقالة "قاعدة معارف Microsoft" التالية:
    246133 كيفية: نقل عمليات تسجيل الدخول وكلمات المرور بين مثيلات SQL Server

    كيفية حل مشكلات الإذن عند نقل قاعدة بيانات بين ملقمات SQL 240872
  • يمكنك استخدام الإجراء sp_change_users_login تخزين لإعادة إقران العلاقات بين الجداول syslogins و sysusers و sysalternates. ومع ذلك، الإجراء يجعل أفضل التقديرات على الارتباطات، وقد تسمح لمستخدم امتيازات الوصول أكثر مما هو مقصود. تشغيل الإجراء مع خيار التقرير أولاً سيقوم بإنشاء قائمة بالمستخدمين التي سيتم استبدالها. وبعد ذلك، يجب عليك التحقق للتأكد من أن المستخدمين المتأثرين الأذونات المناسبة. أيضا، يجب أن تدرك أن الإجراء sp_change_users_login لا يصلح إذن المشاكل الناجمة عن عمليات تسجيل الدخول والمستخدمين التي تم إنشاؤها في ترتيب مختلف على قاعدة البيانات حيث يتم استعادة النسخة الاحتياطية.
  • استعادة ملف تفريغ قاعدة البيانات الرئيسية من وقت تفريغ قاعدة البيانات المستخدم إلى الخادم قبل تحميل قاعدة بيانات مستخدم. القيام بذلك يضمن تطابق كافة معلومات المستخدم في قاعدة بيانات المستخدم بشكل صحيح مع جدول syslogins في الصفحة الرئيسية.


    تحذير: يحتوي على معلومات الخادم قاعدة البيانات الرئيسية، ويؤثر على كافة قواعد البيانات على الملقم. استعادة قاعدة البيانات الرئيسية، فقد تواجه معرفات المستخدمين إضافية و/أو قواعد البيانات التي يتم فقدان أو لديك أذونات غير صحيحة. سيتم فقدان أية تغييرات الرئيسية التي حدثت منذ وقت النسخ الاحتياطي. استخدام هذا الأسلوب فقط إذا كنت متأكداً من أن النسخة الاحتياطية لقاعدة البيانات الرئيسية تحتوي على معلومات دقيقة لقاعدة بيانات المستخدم المعني وكافة قواعد البيانات الأخرى على الملقم.
  • استخدم إدارة نقل (من أجل 6.x) أو DTS (للإصدار 7.0) لنسخ عمليات تسجيل الدخول. يجب أن تدرك أن كلمات المرور لن يتم نقل باستخدام هذا الأسلوب.
  • اتصل بموفر الدعم الأساسي.