كيفية حل مشكلات الإذن عند نقل قاعدة بيانات بين الملقمات التي تستخدم SQL Server

ينطبق على: Microsoft SQL Server 2005 Developer EditionMicrosoft SQL Server 2005 Enterprise EditionMicrosoft SQL Server 2005 Express Edition

ملخص


توضح هذه المقالة كيفية تعيين تسجيلات الدخول موحد ومتكامل لحل مشكلات الإذن عند نقل قاعدة بيانات بين الملقمات التي تستخدم SQL Server.

مزيد من المعلومات


عند نقل قاعدة بيانات من خادم يقوم بتشغيل SQL Server إلى ملقم آخر يقوم بتشغيل SQL Server، قد يحدث عدم تطابق بين أرقام تعريف الأمان (SIDs) عمليات تسجيل الدخول في قاعدة البيانات الرئيسية والمستخدمين في المستخدم قاعدة البيانات. بشكل افتراضي، يوفر SQL Server 7.0 أو SQL Server 2000 أو SQL Server 2005 إجراء النظام المخزن sp_change_users_login لتعيين هؤلاء المستخدمين غير متطابقة. ومع ذلك، يمكنك فقط استخدام الإجراء sp_change_users_login تخزين لتعيين تسجيلات الدخول ملقم SQL القياسية ويجب تنفيذ هذه رسم خرائط لمستخدم واحد في مرة الواحدة. لمزيد من المعلومات حول الإجراء sp_change_users_login تخزين، راجع الموضوع "sp_change_users_login" في SQL Server 7.0 و SQL Server 2000 و 2005 كتب SQL Server.

في SQL Server 7.0 أو الإصدارات الأحدث، يمكنك الحفاظ على التعيين بين عمليات تسجيل الدخول في قاعدة البيانات الرئيسية والمستخدمين في قاعدة بيانات المستخدم باستخدام معرفات الأمان. هذا التعيين مطلوب للاحتفاظ بالأذونات الصحيحة لعمليات تسجيل الدخول في قاعدة بيانات المستخدم . في حالة فقدان هذا التعيين، عمليات تسجيل الدخول لديك مشاكل الأذونات التي تشمل ولكن لا تقتصر على ما يلي:
  • في حالة تسجيل دخول SQL Server غير موجود على الخادم الجديد، ويحاول المستخدم تسجيل الدخول، المستخدم قد تتلقى رسالة الخطأ التالية:
    ملقم: Msg 18456، مستوى 16 حالة 1
    فشل تسجيل الدخول للمستخدم '% ls'.
  • في حالة تسجيل دخول SQL Server موجود على الخادم الجديد، ولكن يختلف عن معرف الأمان SID في قاعدة بيانات المستخدم SID في قاعدة البيانات الرئيسية ، المستخدم يمكن تسجيل الدخول إلى SQL Server بنجاح؛ ومع ذلك، عندما يحاول المستخدم الوصول إلى قاعدة البيانات هذه، المستخدم قد تتلقى رسالة الخطأ التالية:
    ملقم: Msg 916 أو 14 مستوى 1، الحالة Line1
    مستخدم الخادم '%. * ls غير صالحة لمستخدم في قاعدة البيانات' %. * ls '.
    ملاحظة: في SQL Server 2005، قد يتلقى المستخدم رسالة الخطأ التالية:

    مستخدم الخادم '% s' غير صالحة لمستخدم في قاعدة البيانات '% s'. إضافة حساب مستخدم إلى قاعدة البيانات أولاً.
لمزيد من المعلومات حول نموذج SQL Server 7.0 الأمان، راجع المستند التقني "Microsoft SQL Server 7.0 الأمن". لعرض الورقة البيضاء، قم بزيارة موقع Microsoft التالي على الويب:لمزيد من المعلومات حول نموذج SQL Server 2000 الأمان، انقر فوق رقم المقالة التالي لعرضها في "قاعدة المعارف ل Microsoft":

ميزات الأمان ل Microsoft SQL Server 2000 S322712 322712 وأفضل الممارسات

قيود

  • إذا كان هناك المستخدمين في الجدول sysusers دون بادئة اسم الكمبيوتر أو اسم المجال أن الكائنات الخاصة بها، وهذه الكائنات يتم الرجوع إليها في التطبيقات باستخدام اسم يتكون من جزئين
    اسم المستخدم. اسم الكائنقد قطع التطبيق لأن الإجراء sp_sidmap تخزين إعادة تسمية هؤلاء المستخدمين ببادئة اسم الكمبيوتر أو اسم المجال كما يظهر في الجدول sysxlogins . للتغلب على هذه المشكلة، يتم إكمال الإجراء المخزن بعد sp_sidmap أو إعادة تسمية المستخدمين الذين تأثرت في الجدول sysusers إلى أسمائها السابقة أو اتصل بموفر الدعم الأساسي.
  • ولا تعتبر هذه المقالة الأسماء المستعارة. يجب عليك إدارة الأسماء المستعارة يدوياً.
  • في حالة تسجيل الدخول إلى ملقم SQL قياسية غير موجود على ملقم SQL server، يمكنك إضافة تسجيل الدخول باستخدام كلمة مرور فارغة. قد تضطر إلى تغيير كلمة المرور لتسجيل الدخول هذه وفقا لذلك.
  • إذا تم إنشاء مستخدم في قاعدة بيانات المستخدم باسم يختلف عن ذلك الذي يظهر في الجدول sysxlogins ، من المستحيل معرفة تسجيل الدخول المقابلة لذلك المستخدم. لذلك، قبل تشغيل sp_sidmap الإجراء المخزن:
    1. نقل كافة الكائنات التي يملكها هذا المستخدم إلى قاعدة بيانات التجهيز.
    2. إسقاط المستخدم، إضافة مستخدم له الاسم الصحيح، وبعد ذلك نقل كافة الكائنات الخاصة بهذا المستخدم مرة أخرى.
  • إذا كان لدى مستخدم تسجيل دخول المقابل تتحمل بادئة لاسم المجال أو اسم الكمبيوتر المحلي، تظهر رسالة لهذا المستخدم. تشير هذه الرسالة إلى أنه يجب أولاً بإضافة المستخدم على مستوى Windows وقم بإضافتها إلى خادم SQL مثل تسجيل دخول. بعد القيام بذلك، يجب تشغيل الإجراء sp_sidmap تخزين مرة أخرى.
  • إذا كان لدى مستخدم بادئة لاسم المجال أو اسم الملقم المحلي ل Windows، وتسجيل الدخول المقابلة غير موجود في الجدول sysxlogins ، يحاول إجراء مخزن إضافة هذا كحساب جديد لتسجيل دخول إلى SQL Server. في حالة عدم وجود مستخدم Windows، يقوم بإنشاء رسالة إخراج في نافذة نتائج وثم يقوم تسجيل الدخول يدوياً بعد أن يقوم أولاً بإضافة مستخدم Windows.
  • إذا كان هناك أكثر من تسجيل الدخول لمستخدم في الجدول sysusers ، تظهر رسالة إخراج في ملف نتائج وهو يسرد كافة عمليات تسجيل الدخول التي لها نفس اسم المستخدم. عند هذه النقطة، ينبغي التدخل يمكنك يدوياً للتأكد من أن المستخدم يتوافق مع تسجيل دخول واحد فقط.

    المثال إذا كان الجدول sysusers مستخدم باسم "johndoe" ويحتوي الجدول sysxlogins على تسجيلات الدخول مع أسماء مثل "Test\johndoe" و "Test2\johndoe"، عندما تقوم بتشغيل الإجراء المخزن، تتلقى رسالة تشير إلى أن أحد المستخدمين قام أكثر تسجيل الدخول ومسؤول النظام يجب اختيار أحدها. هذه هي المرة الوحيدة التي يجب تشغيل الإجراء المخزن الثاني، sp_prefix_sysusersname، التي يتم توفيرها في هذه المقالة. بالإضافة إلى ذلك، يرد هذا الموقف بالتفصيل في ملف Readme.txt.

تعيين تسجيلات الدخول موحد ومتكامل

بعد نقل قاعدة بيانات من خادم يقوم بتشغيل خادم SQL Server إلى ملقم آخر يقوم بتشغيل خادم SQL Server، اتبع هذه الخطوات لتدخل الحد الأدنى:

SQL Server 7.0 و SQL Server 2000

  1. تأكد من وجود تسجيل دخول في الجدول sysxlogins في قاعدة البيانات الرئيسية لكل مستخدم في الجدول sysusers من قاعدة البيانات.

    ملاحظة: لإضافة تسجيل الدخول إلى ملقم SQL قياسية، راجع الموضوع "sp_addlogin" في "كتب SQL Server عبر إنترنت". لإضافة تسجيل دخول SQL Server متكاملة، راجع الموضوع "sp_grantlogin" في "كتب SQL Server عبر إنترنت".
  2. تحميل الملف MapSids.exe ومن ثم استخراج ملفات Readme.txt و Sp_sidmap.sql.
  3. تسجيل الدخول إلى خادم يقوم بتشغيل SQL Server كمسؤول نظام، ثم قم بتشغيل الملف Sp_sidmap.sql في قاعدة بيانات المستخدم. تشغيل الملف Sp_sidmap.sql بإنشاء اثنين من الإجراءات المخزنة و sp_sidmap و sp_prefix_sysusersname.
  4. تأكد من أن قاعدة البيانات لم يتم الوصول إلى قبل أي مستخدم آخر من الشخص الذي يقوم بتشغيل الإجراءات المخزنة.
  5. تأكد من أن "محلل استعلام" عرض النتائج في تنسيق النص وليس في شكل شبكة. للقيام بذلك، أما اضغط
    CTRL ^ T مفاتيح، أو انقر فوق الاستعلامثم انقر فوق نتائج في النص. هذا هام جداً حيث أنه يمكنك عرض النتائج ورسائل إعلامية في إطار واحد وحفظ الإخراج إلى ملف نصي. قد تحتاج إلى هذا الملف لاحقاً إلى حل بعض التعيينات.
  6. لأنه لا يمكن التحقق من ما إذا كان يتم تمرير المعلمات بشكل صحيح، تأكد من تمريرها بشكل صحيح إلى الإجراء sp_sidmap المخزنة:
    EXEC sp_SidMap @old_domain = old_domain_name,
    @new_domain = new_domain_name,
    @old_server = old_server_name,
    @new_server = new_server_name
    استبدال قيم أسماء المجالات القديمة والجديدة وأسماء الملقمات على النحو المناسب.
  7. حفظ النتائج في ملف واتبع الإرشادات المتوفرة في الملف Readme.txt.

    ملاحظة: عند تشغيل هذه الإجراءات المخزنة، هو جدول sysusers جدول فقط أن التغييرات في قاعدة البيانات. للعودة إلى حالة حيث بدأت، استعادة قاعدة البيانات من النسخة الاحتياطية أو إعادة إرفاق قاعدة البيانات.

SQL Server 2005

إذا كنت تستخدم SQL Server 2005، استخدام جملة تسجيل الدخول مع بيان تبديل المستخدم لإعادة تعيين مستخدم لتسجيل دخول جديد. لمزيد من المعلومات، قم بزيارة موقع شبكة مطوري Microsoft (MSDN) التالي على الويب:ملاحظة: لاستخدام جملة تسجيل الدخول مع بيان تبديل المستخدم ، يجب تطبيق SQL Server 2005 Service Pack 2.

المراجع


لمزيد من المعلومات، انقر فوق أرقام المقالات التالية لعرضها في "قاعدة معارف Microsoft":

الموضوع "استكشاف أخطاء المستخدمين المعزولة" 274188 في كتب غير كاملة

كيفية تحويل تسجيلات الدخول وكلمات المرور بين مثيلات SQL Server 246133

168001 المستخدم تسجيل الدخول و/أو إذن أخطاء بعد استعادة النسخة الاحتياطية

نموذج 298897 : Mapsids.exe يساعد الدول الجزرية الصغيرة النامية مخطط بين المستخدم وقواعد البيانات الرئيسية عند نقل قاعدة البيانات