أنت غير متصل حاليًا، وفي انتظار الإنترنت الخاص بك ليقوم بإعادة الاتصال

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

هام: تمت ترجمة هذه المقالة باستخدام برامج مايكروسوفت للترجمة الآلية ومن المحتمل ان يتم تحريرها او تدقيقها بعد ذلك من خلال تكنولوجيا منصة مجموعات الترجمة(CTF) او من خلال مترجم بشري. تقدم لك شركة مايكروسوفت هذه المقالات المترجمة بشكل آلي او بالترجمة البشرية او بعد تحريرها وتدقيقها من قبل مجموعات الترجمة حتى تمكنكم من الوصول إلى جميع المقالات الموجودة في قواعد المعرفة لديها بلغات مختلفة. إلا أن المقالات المترجمة قد تحتوي على أخطاء في المفردات او بناء الجمل او النحو. وعليه، فإن شركة مايكروسوفت ليست مسؤولة عن اية أخطاء او عدم دقة في الترجمة او أية أضرار قد تحدث نتيجة أخطاء في ترجمة محتويات النص او استخدامه من قبل العملاء.

اضغط هنا لرابط المقالة باللغة الانجليزية918992
مقدمة حول
توضح هذه المقالة كيفية نقل عمليات تسجيل الدخول وكلمات المرور بين مثيلات Microsoft SQL Server 2005 من Microsoft SQL Server 2008 ومن Microsoft SQL Server 2012 على ملقمات مختلفة.

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

ملاحظة تنطبق هذه المعلومات أيضا إلى SQL Server 2008 وعام 2012 في ملقم SQL.

بعد نقل قاعدة بيانات من مثيل SQL Server على ملقم A إلى مثيل SQL Server على ملقم B، قد يتعذر على المستخدمين تسجيل الدخول إلى قاعدة البيانات على الخادم "الإضافة إلى ب ذلك"، قد يتلقى المستخدمون رسالة الخطأ التالية:
فشل تسجيل الدخول للمستخدم 'MyUser'. (ملقم Microsoft SQL، خطأ: 18456)
تحدث هذه المشكلة لأن كنت لم ينقل عمليات تسجيل الدخول وكلمات المرور من مثيل SQL Server على ملقم A إلى مثيل SQL Server على ملقم b.

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

الطريقة الأولى: تسجيل الدخول باستخدام كلمة المرور قبل SQL Server 2000

لحل هذه المشكلة، أطلب من المستخدم لتسجيل الدخول إلى خادم يقوم بتشغيل SQL Server باستخدام تسجيل الدخول قبل SQL Server 2000.

ملاحظة تجزئة كلمة مرور يتم تحديثها تلقائياً عند المستخدم بتسجيل الدخول باستخدام كلمة المرور قبل SQL Server 2000.

الطريقة الثانية: إعادة تعيين كلمة المرور في SQL Server

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

ملاحظة يتم استخدام خوارزمية تجزئة كلمة مرور عند إعادة تعيين كلمة المرور.

الطريقة الثالثة: إنشاء سجل في البرنامج النصي الذي يحتوي على كلمة مرور فارغة

لإنشاء سجل في البرنامج النصي الذي يحتوي على كلمة مرور فارغة، اتبع الخطوات التالية:
  1. على الخادم بتشغيل SQL Server إدارة Studio وثم الاتصال بمثيل SQL Server الذي قمت بنقل قاعدة البيانات.
  2. فتح إطار محرر استعلام جديد ثم قم بتشغيل البرنامج النصي التالي.
    USE masterGOIF OBJECT_ID ('sp_hexadecimal') IS NOT NULL  DROP PROCEDURE sp_hexadecimalGOCREATE PROCEDURE sp_hexadecimal    @binvalue varbinary(256),    @hexvalue varchar (514) OUTPUTASDECLARE @charvalue varchar (514)DECLARE @i intDECLARE @length intDECLARE @hexstring char(16)SELECT @charvalue = '0x'SELECT @i = 1SELECT @length = DATALENGTH (@binvalue)SELECT @hexstring = '0123456789ABCDEF'WHILE (@i <= @length)BEGIN  DECLARE @tempint int  DECLARE @firstint int  DECLARE @secondint int  SELECT @tempint = CONVERT(int, SUBSTRING(@binvalue,@i,1))  SELECT @firstint = FLOOR(@tempint/16)  SELECT @secondint = @tempint - (@firstint*16)  SELECT @charvalue = @charvalue +    SUBSTRING(@hexstring, @firstint+1, 1) +    SUBSTRING(@hexstring, @secondint+1, 1)  SELECT @i = @i + 1ENDSELECT @hexvalue = @charvalueGO IF OBJECT_ID ('sp_help_revlogin') IS NOT NULL  DROP PROCEDURE sp_help_revloginGOCREATE PROCEDURE sp_help_revlogin @login_name sysname = NULL ASDECLARE @name sysnameDECLARE @type varchar (1)DECLARE @hasaccess intDECLARE @denylogin intDECLARE @is_disabled intDECLARE @PWD_varbinary  varbinary (256)DECLARE @PWD_string  varchar (514)DECLARE @SID_varbinary varbinary (85)DECLARE @SID_string varchar (514)DECLARE @tmpstr  varchar (1024)DECLARE @is_policy_checked varchar (3)DECLARE @is_expiration_checked varchar (3)DECLARE @defaultdb sysname IF (@login_name IS NULL)  DECLARE login_curs CURSOR FOR      SELECT p.sid, p.name, p.type, p.is_disabled, p.default_database_name, l.hasaccess, l.denylogin FROM sys.server_principals p LEFT JOIN sys.syslogins l      ON ( l.name = p.name ) WHERE p.type IN ( 'S', 'G', 'U' ) AND p.name <> 'sa'ELSE  DECLARE login_curs CURSOR FOR      SELECT p.sid, p.name, p.type, p.is_disabled, p.default_database_name, l.hasaccess, l.denylogin FROM sys.server_principals p LEFT JOIN sys.syslogins l      ON ( l.name = p.name ) WHERE p.type IN ( 'S', 'G', 'U' ) AND p.name = @login_nameOPEN login_cursFETCH NEXT FROM login_curs INTO @SID_varbinary, @name, @type, @is_disabled, @defaultdb, @hasaccess, @denyloginIF (@@fetch_status = -1)BEGIN  PRINT 'No login(s) found.'  CLOSE login_curs  DEALLOCATE login_curs  RETURN -1ENDSET @tmpstr = '/* sp_help_revlogin script 'PRINT @tmpstrSET @tmpstr = '** Generated ' + CONVERT (varchar, GETDATE()) + ' on ' + @@SERVERNAME + ' */'PRINT @tmpstrPRINT ''WHILE (@@fetch_status <> -1)BEGIN  IF (@@fetch_status <> -2)  BEGIN    PRINT ''    SET @tmpstr = '-- Login: ' + @name    PRINT @tmpstr    IF (@type IN ( 'G', 'U'))    BEGIN -- NT authenticated account/group      SET @tmpstr = 'CREATE LOGIN ' + QUOTENAME( @name ) + ' FROM WINDOWS WITH DEFAULT_DATABASE = [' + @defaultdb + ']'    END    ELSE BEGIN -- SQL Server authentication        -- obtain password and sid            SET @PWD_varbinary = CAST( LOGINPROPERTY( @name, 'PasswordHash' ) AS varbinary (256) )        EXEC sp_hexadecimal @PWD_varbinary, @PWD_string OUT        EXEC sp_hexadecimal @SID_varbinary,@SID_string OUT         -- obtain password policy state        SELECT @is_policy_checked = CASE is_policy_checked WHEN 1 THEN 'ON' WHEN 0 THEN 'OFF' ELSE NULL END FROM sys.sql_logins WHERE name = @name        SELECT @is_expiration_checked = CASE is_expiration_checked WHEN 1 THEN 'ON' WHEN 0 THEN 'OFF' ELSE NULL END FROM sys.sql_logins WHERE name = @name             SET @tmpstr = 'CREATE LOGIN ' + QUOTENAME( @name ) + ' WITH PASSWORD = ' + @PWD_string + ' HASHED, SID = ' + @SID_string + ', DEFAULT_DATABASE = [' + @defaultdb + ']'        IF ( @is_policy_checked IS NOT NULL )        BEGIN          SET @tmpstr = @tmpstr + ', CHECK_POLICY = ' + @is_policy_checked        END        IF ( @is_expiration_checked IS NOT NULL )        BEGIN          SET @tmpstr = @tmpstr + ', CHECK_EXPIRATION = ' + @is_expiration_checked        END    END    IF (@denylogin = 1)    BEGIN -- login is denied access      SET @tmpstr = @tmpstr + '; DENY CONNECT SQL TO ' + QUOTENAME( @name )    END    ELSE IF (@hasaccess = 0)    BEGIN -- login exists but does not have access      SET @tmpstr = @tmpstr + '; REVOKE CONNECT SQL TO ' + QUOTENAME( @name )    END    IF (@is_disabled = 1)    BEGIN -- login is disabled      SET @tmpstr = @tmpstr + '; ALTER LOGIN ' + QUOTENAME( @name ) + ' DISABLE'    END    PRINT @tmpstr  END  FETCH NEXT FROM login_curs INTO @SID_varbinary, @name, @type, @is_disabled, @defaultdb, @hasaccess, @denylogin   ENDCLOSE login_cursDEALLOCATE login_cursRETURN 0GO


    ملاحظةهذا البرنامج النصي بإنشاء اثنين من الإجراءات المخزنة في قاعدة البيانات الرئيسية. يتم تسمية الإجراءاتsp_hexadecimal و sp_help_revlogin.
  3. تشغيل العبارة التالية:
    EXEC sp_help_revlogin
    يتم إخراج البرنامج النصي يقوم الإجراء sp_help_revlogin تخزين برنامج تسجيل الدخول. ينشئ هذا البرنامج النصي لتسجيل الدخول تسجيل الدخول التي تحتوي على معرف الأمان (SID) الأصلي وكلمة المرور الأصلية.
  4. على الخادم ب بدء Studio إدارة ملقم SQL وثم الاتصال بمثيل SQL Server الذي تم نقل قاعدة البيانات.

    هام قبل الانتقال إلى الخطوة 5، راجع المعلومات في المقطع "ملاحظات".
  5. فتح إطار محرر استعلام جديد ثم قم بتشغيل البرنامج النصي الإخراج الذي تم إنشاؤه في الخطوة 3.

ملاحظات

مراجعة المعلومات التالية قبل تشغيل البرنامج النصي الإخراج على المثيل على الملقم ب:
  • إذا حاولت إنشاء تسجيل دخول SQL Server 2012 جديدة باستخدام تسجيل دخول 2000 Server قبل SQL التي يتم كتابتها، تتلقى الخطأ التالي:
    جي إس 15021، مستوى 16 حالة 2، السطر الأول
    قيمة غير صالحة للمعلمة كلمة المرور. تعيين قيمة معلمة صالحة.
    ملاحظة تتلقى هذا الخطأ في SQL Server 2012 بسبب تجزئة كلمة مرور 16 بايت التي تم تقديمها لإنشاء تسجيل الدخول وتسجيل الدخول تغيير العبارات.

    لحل هذه المشكلة على خادم يقوم بتشغيل SQL Server 2012، إنشاء تسجيل دخول يحتوي على كلمة مرور فارغة. للقيام بذلك، تشغيل البرنامج النصي التالي:
    CREATE LOGIN [Test] WITH PASSWORD = '', SID = 0x90FD605DCEFAE14FAB4D5EB0BBA1AECC, DEFAULT_DATABASE = [master], CHECK_POLICY = ON, CHECK_EXPIRATION = OFF

    بعد إنشاء عملية تسجيل الدخول بكلمة مرور فارغة، يمكن للمستخدم تغيير كلمة المرور عند محاولة تسجيل الدخول التالية.
  • يتم تجزئة كلمة مرور بثلاث طرق:
    • VERSION_LEGACY: هذه التجزئة تجزئة 16 بايت قبل SQL Server 2000.
    • VERSION_SHA1: يتم إنشاؤه باستخدام خوارزمية SHA1 تجزئة هذا ويستخدم في SQL Server 2000 إلى SQL Server 2008 R2.
    • VERSION_SHA2: هذه التجزئة التي تم إنشاؤها باستخدام خوارزمية SHA2 512 ويستخدم في SQL Server 2012.
  • في SQL Server 2008 R1 والإصدارات السابقة، كانت معتمدة قبل SQL Server 2000 كلمة المرور التجزئات. عندما يقوم المستخدم تسجيل الدخول باستخدام كلمة مرور المستخدمة من قبل SQL خادم 2000 تجزئة، تمت ترقية التجزئة استخدام كلمة مرور التجزئة SHA1.
  • مستخدم لديه كلمة مرور التجزئة قبل SQL الخادم 2000 يستخدم موجوداً على خادم يقوم بتشغيل SQL Server 2008 R2، وهذا يعني أن عدم تسجيل المستخدم هذا الخادم.
  • راجع إخراج البرنامج النصي بعناية. إذا كان ملقم A و B ملقم في مجالات مختلفة، يجب عليك تغيير إخراج البرنامج النصي. وبعد ذلك، يجب عليك استبدال اسم المجال الأصلي باستخدام اسم المجال الجديد في عبارات "إنشاء تسجيل الدخول". تسجيلات الدخول المتكاملة التي يتم منحها الوصول في المجال الجديد ليس SID نفسها كعمليات تسجيل الدخول في المجال الأصلي. لذلك، يتم عزل المستخدمين من تسجيل الدخول هذه. لمزيد من المعلومات حول كيفية حل هؤلاء المستخدمين المعزولة، انقر فوق رقم المقالة التالي لعرضها في "قاعدة المعارف ل Microsoft":
    240872 كيفية حل مشكلات الإذن عند نقل قاعدة بيانات بين الملقمات التي تستخدم SQL Server
    إذا كان ملقم A و B ملقم في نفس المجال، يتم استخدام نفس معرف الأمان. لذلك، المستخدمين غير المحتمل أن يتم عزل.
  • في إخراج البرنامج النصي، يتم إنشاء عمليات تسجيل الدخول باستخدام كلمة المرور المشفرة. ويعود الوسيطة حاشد في بيان "إنشاء تسجيل الدخول". تعين هذه الوسيطة التي يتم تجزئة كلمة المرور التي تم إدخالها بعد الوسيطة كلمة المرور مسبقاً.
  • بشكل افتراضي، يمكن تشغيل عضو دور مسؤول النظام sysadmin الثابت على الملقم عبارة SELECT من طريقة العرض sys.server_principals . إلا إذا إصلاح عضو مسؤول النظام دور خادم منح الأذونات الضرورية للمستخدمين، لا يمكن المستخدمين من إنشاء أو تشغيل البرنامج النصي الإخراج.
  • لا يتم تحويل الخطوات الموجودة في هذه المقالة معلومات قاعدة البيانات الافتراضية لتسجيل دخول معينة. هذا بسبب عدم وجود قاعدة البيانات الافتراضية قد دائماً على ملقم b. لتعريف قاعدة البيانات الافتراضية لتسجيل دخول، استخدام جملة "تغيير تسجيل الدخول" بتمرير اسم تسجيل الدخول وقاعدة البيانات الافتراضية كوسائط.
  • تحسس حالة الأحرف A لحالة ملقم وملقم B: قد يكون ترتيب الفرز الملقم A تحسس حالة الأحرف وترتيب الفرز للخادم ب قد تكون حساسة لحالة الأحرف. في هذه الحالة، المستخدمين يجب كتابة كلمات المرور بأحرف كبيرة بعد نقل عمليات تسجيل الدخول وكلمات المرور إلى المثيل على ملقم b.

    تحسس حالة الأحرف A تحسس حالة الأحرف ملقم وملقم B: قد يكون ترتيب الفرز الملقم A تحسس حالة الأحرف وترتيب الفرز للخادم ب قد تكون حساسة لحالة الأحرف. في هذه الحالة، لا يمكن تسجيل المستخدمين باستخدام عمليات تسجيل الدخول وكلمات المرور التي يتم نقلها إلى المثيل على الملقم ب إلا إذا تحقق أحد الشروط التالية:
    • كلمات المرور الأصلية التي تحتوي على لم أحرف.
    • تكون كافة الأحرف في كلمات المرور الأصلية بأحرف كبيرة.
    تحسس حالة الأحرف أو لا تدعمها على خادمي: قد يكون ترتيب الفرز لكل من ملقم A وملقم B حساسة لحالة الأحرف، أو قد يكون ترتيب الفرز لكل من ملقم A وملقم B تحسس حالة الأحرف. في هذه الحالات، المستخدمين لا تواجه مشكلة.
  • تسجيل دخول بالفعل في المثيل على الملقم B قد يكون اسم هو نفس اسم في إخراج البرنامج النصي. في هذه الحالة، تظهر رسالة الخطأ التالية عند تشغيل البرنامج النصي الإخراج على المثيل على الملقم ب:
    Msg 15025، مستوى 16 حالة 1، السطر الأول
    الملقم الرئيسي 'MyLogin' موجود بالفعل.
    وبالمثل، قد يكون تسجيل دخول بالفعل في المثيل على الملقم ب SID هو نفس SID في إخراج البرنامج النصي. في هذه الحالة، تظهر رسالة الخطأ التالية عند تشغيل البرنامج النصي الإخراج على المثيل على الملقم ب:
    Msg 15433، مستوى 16 حالة 1، السطر الأول
    المعلمة التي تم توفيرها sid قيد الاستخدام.
    ولذلك، يجب تنفيذ ما يلي:
    1. راجع إخراج البرنامج النصي بعناية.
    2. فحص محتويات العرض sys.server_principals في المثيل على ملقم b.
    3. عنوان رسائل الخطأ هذه حسب الاقتضاء.
  • في SQL Server 2005، يستخدم SID لتسجيل دخول للوصول إلى قاعدة بيانات على مستوى تنفيذ. قد يكون تسجيل دخول مختلف الدول الجزرية الصغيرة النامية في قواعد بيانات مختلفة على ملقم. في هذه الحالة، يمكن فقط الوصول تسجيل الدخول إلى قاعدة البيانات الذي يحتوي على معرف الأمان SID في طريقة العرض sys.server_principals يطابق. قد تحدث هذه المشكلة إذا تم الجمع بين قاعدتي البيانات من ملقمات مختلفة. لحل هذه المشكلة، يدوياً إزالة تسجيل الدخول من قاعدة بيانات يحتوي على عدم تطابق معرف أمان باستخدام عبارة DROP USER. ثم إضافة تسجيل الدخول مرة أخرى باستخدام العبارة "إنشاء مستخدم".
مراجع
لمزيد من المعلومات حول كيفية استكشاف أخطاء المستخدمين المعزولة، انتقل استكشاف أخطاء المستخدمين المعزولة موقع شبكة مطوري Microsoft (MSDN).

لمزيد من المعلومات حول "إنشاء تسجيل الدخول"، انتقل إنشاء تسجيل الدخول (Transact SQL) موقع MSDN على ويب.

لمزيد من المعلومات حول "تغيير تسجيل الدخول"، انتقل تغيير تسجيل الدخول (Transact SQL) موقع MSDN على ويب.

تحذير: تمت ترجمة هذه المقالة تلقائيًا

خصائص

رقم الموضوع: 918992 - آخر مراجعة: 10/10/2013 02:08:00 - المراجعة: 4.0

Microsoft SQL Server 2005 Standard Edition, Microsoft SQL Server 2005 Workgroup Edition, Microsoft SQL Server 2005 Developer Edition, Microsoft SQL Server 2005 Enterprise Edition, Microsoft SQL Server 2008 Standard, Microsoft SQL Server 2008 Workgroup, Microsoft SQL Server 2008 Developer, Microsoft SQL Server 2008 Enterprise, Microsoft SQL Server 2012 Standard, Microsoft SQL Server 2012 Developer, Microsoft SQL Server 2012 Enterprise

  • kbsqlsetup kbexpertiseadvanced kbhowto kbinfo kbmt KB918992 KbMtar
تعليقات
t/javascript"> Asimov.clickstreamTracker.init(); l>=">