כיצד להעביר כניסות וסיסמאות בין מופעים של שרת SQL

תרגומי מאמרים תרגומי מאמרים
Article ID: 246133 - View products that this article applies to.
הרחב הכל | כווץ הכל

On This Page

תקציר

לאחר העברת מסדי נתונים לשרת חדש, לא ייתכן שמשתמשים היכולת להיכנס לשרת החדש. במקום זאת, הם מקבלים את השגיאה הבאה הודעה:
Msg 18456, רמת 16, מצב 1
כניסה נכשל עבור המשתמש '% ls'.
עליך להעביר את כניסות ו סיסמאות לשרת החדש. מאמר זה מתאר כיצד להעביר כניסות ו סיסמאות לשרת חדש.

כיצד כדי להעביר כניסות וסיסמאות בין לשרתים שבהם פועל SQL Server 7.0

אובייקט שירותים (DTS) המרה נתונים של SQL Server 7.0 העברת תכונה מעביר כניסות ומשתמשים בין שני שרתים, אך היא אינה לא יעברו את הסיסמאות עבור אימות SQL Server כניסות. כדי להעביר כניסות וסיסמאות מתוך שרת שבו פועל SQL Server 7.0 אחר בשרת שבו פועל SQL Server 7.0, בצע את השלבים במקטע "פתרון מלא לשם העברת כניסות וסיסמאות בין גירסאות שונות של SQL Server".

כיצד להעביר כניסות וסיסמאות של SQL שרת 7.0 ל- SQL Server 2000 או בין לשרתים שבהם פועל SQL Server 2000

כדי להעביר כניסות וסיסמאות משרת SQL Server 7.0 ל מופע של SQL Server 2000, או בין שני מופעים של שרת SQL 2000, באפשרותך להשתמש DTS חבילת העברת כניסות הפעילות החדשה ב- SQL Server 2000. לשם כך, בצע את הפעולות הבאות:
  1. להתחבר אל שרת היעד של SQL Server 2000, להעביר שירותי המרת נתונים ב- SQL Server Enterprise Manager, הרחב התיקיה, לחץ לחיצה ימנית על חבילות מקומיולאחר מכן לחץ על החבילה החדשה.
  2. לאחר DTS אריזת נפתח המעצב, לחץ על העברת הפעילות כניסות בתפריט המשימות . השלם את המידע אודות המקור, היעדכניסות הכרטיסיות לפי הצורך.

    חשוב אין שרת היעד של SQL Server 2000 פועלת גירסת 64 סיביות של SQL Server 2000. רכיבי DTS עבור גירסת 64 סיביות של SQL Server 2000 אינם זמינים. אם אתה מייבא כניסות מתוך מופע של SQL Server שנמצא במחשב נפרד, יהיה את המופע של SQL Server חייב לפעול תחת חשבון תחום כדי להשלים את המשימה.

    הערה השיטה DTS תעביר את הסיסמאות אך לא SID המקורי. אם לא נוצר של כניסה באמצעות SID והמשתמש המקורי מסדי נתונים מועברים גם לשרת חדש, תהיה למשתמשים מסד נתונים התייתם מכניסה. כדי להעביר את ה-SID המקורי ואת לעקוף את יתומים משתמשים, בצע את השלבים במקטע "פתרון מלא לשם העברת כניסות וסיסמאות בין גירסאות שונות של SQL Server".

כיצד להעביר כניסות וסיסמאות בין מופעים של SQL Server 2005

לקבלת מידע נוסף אודות אופן העברת כניסות וסיסמאות בין מופעים של SQL Server 2005, לחץ על מספר המאמר שלהלן כדי להציגו מתוך מאגר הידע Microsoft Knowledge Base:
918992כיצד להעביר את כניסות וסיסמאות בין מופעים של SQL Server 2005

פתרון מלא להעברת כניסות וסיסמאות בין גירסאות שונות של שרת SQL

לשם כך, השתמש באחת מהשיטות הבאות.
הערות
  • קבצי ה-script בשיטות הבאות ליצור שתי שגרות מאוחסנות להן שם השגרה המאוחסנת sp_hexadecimal ועל הליך sp_help_revlogin המאוחסן במסד הנתונים הראשי .
  • קבצי ה-script תלויים טבלאות המערכת של שרת SQL. המבנה של טבלאות אלה עשויים להשתנות בין הגירסאות של שרת SQL. בחירה ישירות מתוך טבלאות מערכת אינה מומלצת.
  • עיין בהערות בסוף מאמר זה עבור חשובים מידע אודות השלבים השיטות.
  • שיטה 2 מקצה כניסות לתפקידים.

שיטה 1

שיטה זו חלה על התרחישים הבאים:
  • העברת כניסות וסיסמאות מ- SQL Server 7.0 ל- SQL Server 7.0.
  • העברת כניסות וסיסמאות מ- SQL Server 7.0 ל- SQL Server 2000.
  • העברת כניסות וסיסמאות בין לשרתים שבהם פועל SQL Server 2000.
כדי להעביר כניסות וסיסמאות בין גירסאות שונות של SQL Server, בצע את הפעולות הבאות:
  1. הפעל את התסריט מקור SQL Server. המשך לשלב 2 עם סיום יצירת sp_help_revlogin שגרה מאוחסנת.
    ----- Begin Script, Create sp_help_revlogin procedure -----
    
    USE master
    GO
    IF OBJECT_ID ('sp_hexadecimal') IS NOT NULL
      DROP PROCEDURE sp_hexadecimal
    GO
    CREATE PROCEDURE sp_hexadecimal
        @binvalue varbinary(256),
        @hexvalue varchar(256) OUTPUT
    AS
    DECLARE @charvalue varchar(256)
    DECLARE @i int
    DECLARE @length int
    DECLARE @hexstring char(16)
    SELECT @charvalue = '0x'
    SELECT @i = 1
    SELECT @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 + 1
    END
    SELECT @hexvalue = @charvalue
    GO
    
    IF OBJECT_ID ('sp_help_revlogin') IS NOT NULL
      DROP PROCEDURE sp_help_revlogin 
    GO
    CREATE PROCEDURE sp_help_revlogin @login_name sysname = NULL AS
    DECLARE @name    sysname
    DECLARE @xstatus int
    DECLARE @binpwd  varbinary (256)
    DECLARE @txtpwd  sysname
    DECLARE @tmpstr  varchar (256)
    DECLARE @SID_varbinary varbinary(85)
    DECLARE @SID_string varchar(256)
    
    IF (@login_name IS NULL)
      DECLARE login_curs CURSOR FOR 
        SELECT sid, name, xstatus, password FROM master..sysxlogins 
        WHERE srvid IS NULL AND name <> 'sa'
    ELSE
      DECLARE login_curs CURSOR FOR 
        SELECT sid, name, xstatus, password FROM master..sysxlogins 
        WHERE srvid IS NULL AND name = @login_name
    OPEN login_curs 
    FETCH NEXT FROM login_curs INTO @SID_varbinary, @name, @xstatus, @binpwd
    IF (@@fetch_status = -1)
    BEGIN
      PRINT 'No login(s) found.'
      CLOSE login_curs 
      DEALLOCATE login_curs 
      RETURN -1
    END
    SET @tmpstr = '/* sp_help_revlogin script ' 
    PRINT @tmpstr
    SET @tmpstr = '** Generated ' 
      + CONVERT (varchar, GETDATE()) + ' on ' + @@SERVERNAME + ' */'
    PRINT @tmpstr
    PRINT ''
    PRINT 'DECLARE @pwd sysname'
    WHILE (@@fetch_status <> -1)
    BEGIN
      IF (@@fetch_status <> -2)
      BEGIN
        PRINT ''
        SET @tmpstr = '-- Login: ' + @name
        PRINT @tmpstr 
        IF (@xstatus & 4) = 4
        BEGIN -- NT authenticated account/group
          IF (@xstatus & 1) = 1
          BEGIN -- NT login is denied access
            SET @tmpstr = 'EXEC master..sp_denylogin ''' + @name + ''''
            PRINT @tmpstr 
          END
          ELSE BEGIN -- NT login has access
            SET @tmpstr = 'EXEC master..sp_grantlogin ''' + @name + ''''
            PRINT @tmpstr 
          END
        END
        ELSE BEGIN -- SQL Server authentication
          IF (@binpwd IS NOT NULL)
          BEGIN -- Non-null password
            EXEC sp_hexadecimal @binpwd, @txtpwd OUT
            IF (@xstatus & 2048) = 2048
              SET @tmpstr = 'SET @pwd = CONVERT (varchar(256), ' + @txtpwd + ')'
            ELSE
              SET @tmpstr = 'SET @pwd = CONVERT (varbinary(256), ' + @txtpwd + ')'
            PRINT @tmpstr
    	EXEC sp_hexadecimal @SID_varbinary,@SID_string OUT
            SET @tmpstr = 'EXEC master..sp_addlogin ''' + @name 
              + ''', @pwd, @sid = ' + @SID_string + ', @encryptopt = '
          END
          ELSE BEGIN 
            -- Null password
    	EXEC sp_hexadecimal @SID_varbinary,@SID_string OUT
            SET @tmpstr = 'EXEC master..sp_addlogin ''' + @name 
              + ''', NULL, @sid = ' + @SID_string + ', @encryptopt = '
          END
          IF (@xstatus & 2048) = 2048
            -- login upgraded from 6.5
            SET @tmpstr = @tmpstr + '''skip_encryption_old''' 
          ELSE 
            SET @tmpstr = @tmpstr + '''skip_encryption'''
          PRINT @tmpstr 
        END
      END
      FETCH NEXT FROM login_curs INTO @SID_varbinary, @name, @xstatus, @binpwd
      END
    CLOSE login_curs 
    DEALLOCATE login_curs 
    RETURN 0
    GO
     ----- End Script -----
    
    
  2. לאחר שתיצור את השגרה המאוחסנת sp_help_revlogin , הפעל את השגרה sp_help_revlogin מתוך מנתח שאילתות בשרת המקור. ניתן להשתמש בהליך sp_help_revlogin מאוחסנים על שרת SQL גירסה 7.0 ו- SQL Server 2000. הפלט של הפרוצדורה המאוחסנת sp_help_revlogin היא script כניסה יוצר כניסות עם SID המקורי ואת הסיסמה. לשמור את הפלט, ולאחר מכן להדביק ומופעל אותו ב- Query מנתח היעד שרת SQL. לדוגמה:
    EXEC master..sp_help_revlogin
    

שיטה 2

שיטה זו חלה על התרחישים הבאים:
  • העברת כניסות וסיסמאות מ- SQL Server 7.0 ל- SQL Server 2005.
  • באפשרותך להעביר כניסות וסיסמאות מ- SQL Server 2000 SQL Server 2005.
  • באפשרותך להקצות כניסות לתפקידים.
כדי להעביר כניסות וסיסמאות בין גירסאות שונות של SQL Server ולאחר מכן הקצה כניסות לתפקידים, בצע את הפעולות הבאות:
  1. הפעל את התסריט מקור SQL Server.
    USE master 
    GO 
    IF OBJECT_ID ('sp_hexadecimal') IS NOT NULL 
    DROP PROCEDURE sp_hexadecimal 
    GO 
    CREATE PROCEDURE sp_hexadecimal 
    @binvalue varbinary(256), 
    @hexvalue varchar(256) OUTPUT 
    AS 
    DECLARE @charvalue varchar(256) 
    DECLARE @i int 
    DECLARE @length int 
    DECLARE @hexstring char(16) 
    SELECT @charvalue = '0x' 
    SELECT @i = 1 
    SELECT @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 + 1 
    END 
    SELECT @hexvalue = @charvalue 
    GO 
    
    IF OBJECT_ID ('sp_help_revlogin_2000_to_2005') IS NOT NULL 
    DROP PROCEDURE sp_help_revlogin_2000_to_2005 
    GO 
    CREATE PROCEDURE sp_help_revlogin_2000_to_2005 
    
    @login_name sysname = NULL, 
    @include_db bit = 0, 
    @include_role bit = 0 
    
    AS 
    DECLARE @name sysname 
    DECLARE @xstatus int 
    DECLARE @binpwd varbinary (256) 
    DECLARE @dfltdb varchar (256) 
    DECLARE @txtpwd sysname 
    DECLARE @tmpstr varchar (256) 
    DECLARE @SID_varbinary varbinary(85) 
    DECLARE @SID_string varchar(256) 
    
    IF (@login_name IS NULL) 
    DECLARE login_curs CURSOR STATIC FOR 
    SELECT sid, [name], xstatus, password, isnull(db_name(dbid), 'master') 
    FROM master.dbo.sysxlogins 
    WHERE srvid IS NULL AND 
    [name] <> 'sa' 
    ELSE 
    DECLARE login_curs CURSOR FOR 
    SELECT sid, [name], xstatus, password, isnull(db_name(dbid), 'master') 
    FROM master.dbo.sysxlogins 
    WHERE srvid IS NULL AND 
    [name] = @login_name 
    
    OPEN login_curs 
    
    FETCH NEXT FROM login_curs INTO @SID_varbinary, @name, @xstatus, @binpwd, @dfltdb 
    
    IF (@@fetch_status = -1) 
    BEGIN 
    PRINT 'No login(s) found.' 
    CLOSE login_curs 
    DEALLOCATE login_curs 
    RETURN -1 
    END 
    
    SET @tmpstr = '/* sp_help_revlogin script ' 
    PRINT @tmpstr 
    SET @tmpstr = '** Generated ' 
    + CONVERT (varchar, GETDATE()) + ' on ' + @@SERVERNAME + ' */' 
    PRINT @tmpstr 
    PRINT '' 
    PRINT '' 
    PRINT '' 
    PRINT '/***** CREATE LOGINS *****/' 
    
    WHILE @@fetch_status = 0 
    BEGIN 
    PRINT '' 
    SET @tmpstr = '-- Login: ' + @name 
    PRINT @tmpstr 
    
    IF (@xstatus & 4) = 4 
    BEGIN -- NT authenticated account/group 
    IF (@xstatus & 1) = 1 
    BEGIN -- NT login is denied access 
    SET @tmpstr = '' --'EXEC master..sp_denylogin ''' + @name + '''' 
    PRINT @tmpstr 
    END 
    ELSE 
    BEGIN -- NT login has access 
    SET @tmpstr = 'IF NOT EXISTS (SELECT * FROM sys.server_principals WHERE [name] = ''' + @name + ''')' 
    PRINT @tmpstr 
    SET @tmpstr = CHAR(9) + 'CREATE LOGIN [' + @name + '] FROM WINDOWS' 
    PRINT @tmpstr 
    END 
    END 
    ELSE 
    BEGIN -- SQL Server authentication 
    EXEC sp_hexadecimal @SID_varbinary, @SID_string OUT 
    
    IF (@binpwd IS NOT NULL) 
    BEGIN -- Non-null password 
    EXEC sp_hexadecimal @binpwd, @txtpwd OUT 
    SET @tmpstr = 'CREATE LOGIN [' + @name + '] WITH PASSWORD=' + @txtpwd + ' HASHED' 
    END 
    ELSE 
    BEGIN -- Null password 
    SET @tmpstr = 'CREATE LOGIN [' + @name + '] WITH PASSWORD=''''' 
    END 
    
    SET @tmpstr = @tmpstr + ', CHECK_POLICY=OFF, SID=' + @SID_string 
    PRINT @tmpstr 
    END 
    
    FETCH NEXT FROM login_curs INTO @SID_varbinary, @name, @xstatus, @binpwd, @dfltdb 
    END 
    
    IF @include_db = 1 
    BEGIN 
    PRINT '' 
    PRINT '' 
    PRINT '' 
    PRINT '/***** SET DEFAULT DATABASES *****/' 
    
    FETCH FIRST FROM login_curs INTO @SID_varbinary, @name, @xstatus, @binpwd, @dfltdb 
    
    WHILE @@fetch_status = 0 
    BEGIN 
    PRINT '' 
    SET @tmpstr = '-- Login: ' + @name 
    PRINT @tmpstr 
    
    SET @tmpstr = 'ALTER LOGIN [' + @name + '] WITH DEFAULT_DATABASE=[' + @dfltdb + ']' 
    PRINT @tmpstr 
    
    FETCH NEXT FROM login_curs INTO @SID_varbinary, @name, @xstatus, @binpwd, @dfltdb 
    END 
    END 
    
    IF @include_role = 1 
    BEGIN 
    PRINT '' 
    PRINT '' 
    PRINT '' 
    PRINT '/***** SET SERVER ROLES *****/' 
    
    FETCH FIRST FROM login_curs INTO @SID_varbinary, @name, @xstatus, @binpwd, @dfltdb 
    
    WHILE @@fetch_status = 0 
    BEGIN 
    PRINT '' 
    SET @tmpstr = '-- Login: ' + @name 
    PRINT @tmpstr 
    
    IF @xstatus &16 = 16 -- sysadmin 
    BEGIN 
    SET @tmpstr = 'exec master.dbo.sp_addsrvrolemember @loginame=''' + @name + ''', @rolename=''sysadmin''' 
    PRINT @tmpstr 
    END 
    
    IF @xstatus &32 = 32 -- securityadmin 
    BEGIN 
    SET @tmpstr = 'exec master.dbo.sp_addsrvrolemember @loginame=''' + @name + ''', @rolename=''securityadmin''' 
    PRINT @tmpstr 
    END 
    
    IF @xstatus &64 = 64 -- serveradmin 
    BEGIN 
    SET @tmpstr = 'exec master.dbo.sp_addsrvrolemember @loginame=''' + @name + ''', @rolename=''serveradmin''' 
    PRINT @tmpstr 
    END 
    
    IF @xstatus &128 = 128 -- setupadmin 
    BEGIN 
    SET @tmpstr = 'exec master.dbo.sp_addsrvrolemember @loginame=''' + @name + ''', @rolename=''setupadmin''' 
    PRINT @tmpstr 
    END 
    
    IF @xstatus &256 = 256 --processadmin 
    BEGIN 
    SET @tmpstr = 'exec master.dbo.sp_addsrvrolemember @loginame=''' + @name + ''', @rolename=''processadmin''' 
    PRINT @tmpstr 
    END 
    
    IF @xstatus &512 = 512 -- diskadmin 
    BEGIN 
    SET @tmpstr = 'exec master.dbo.sp_addsrvrolemember @loginame=''' + @name + ''', @rolename=''diskadmin''' 
    PRINT @tmpstr 
    END 
    
    IF @xstatus &1024 = 1024 -- dbcreator 
    BEGIN 
    SET @tmpstr = 'exec master.dbo.sp_addsrvrolemember @loginame=''' + @name + ''', @rolename=''dbcreator''' 
    PRINT @tmpstr 
    END 
    
    IF @xstatus &4096 = 4096 -- bulkadmin 
    BEGIN 
    SET @tmpstr = 'exec master.dbo.sp_addsrvrolemember @loginame=''' + @name + ''', @rolename=''bulkadmin''' 
    PRINT @tmpstr 
    END 
    
    FETCH NEXT FROM login_curs INTO @SID_varbinary, @name, @xstatus, @binpwd, @dfltdb 
    END 
    END 
    
    CLOSE login_curs 
    DEALLOCATE login_curs 
    RETURN 0 
    GO
    
    exec sp_help_revlogin_2000_to_2005 @login_name=NULL, @include_db=1, @include_role=1
    GO
  2. לשמור את הפלט, ולאחר מכן להדביק ומופעל הפלט ב- SQL Server ניהול Studio היעד SQL Server 2005.
הערה אם המקור SQL Server מכיל כניסה עם סיסמה ריקה, הפלט מכיל משפט הדומה להודעה הבאה.
CREATE LOGIN LoginName WITH PASSWORD = '', CHECK_POLICY = OFF, SID = MySID

הערות

  • לסקור את קובץ ה-script פלט בקפידה לפני שאתה מפעיל אותו היעד שרת SQL. אם יש לך להעביר כניסות למופע של SQL שרת בתחום אחר מאשר מקור המופע של SQL Server, ערוך script שנוצר על-ידי השגרה sp_help_revlogin ולהחליף את שם קבוצת המחשבים עם קבוצת המחשבים החדשה ב- משפטי sp_grantlogin . מאחר כניסות משולב הוענקה גישה ב- קבוצת המחשבים החדשה לא תהיה SID אותו כמו כניסות בתחום המקורי, אפשרות התייתם משתמשים במסד נתונים מתוך כניסות אלה. כדי לפתור את אלה התייתם משתמשים, עיין במאמרים שאוזכרו פריט התבליט הבא. אם אתה העברת כניסות משולבת בין מופעים של שרתי SQL באותו תחום, נעשה שימוש במזהה האבטחה אותו ואת המשתמש שלא סביר להיות התייתם.
  • לאחר שתעביר את כניסות, שייתכן שלמשתמשים אין הרשאות כדי לגשת למסדי נתונים גם שמיקומם השתנה. בעיה זו נקראת "יתומים"משתמש. אם תנסה להעניק גישת כניסה למסד הנתונים, ייתכן להיכשל המציין שהמשתמש כבר קיים:
    Microsoft SQL-DMO (ODBC SQLState: 42000) שגיאה 15023: המשתמש או התפקיד '% s' כבר קיים ב- מסד הנתונים הנוכחי.
    לקבלת הוראות כיצד למפות את כניסות ל משתמשים במסד נתונים כדי לפתור התחברויות לשרת SQL יתומים כניסות משולב, עיין במאמר הבא מתוך מאגר הידע Microsoft Knowledge Base:
    240872 כיצד לפתור בעיות הרשאה בעת העברת מסד נתונים בין לשרתים שבהם פועל שרת SQL
    לקבלת הוראות אודות השימוש sp_change_users_login שגרה כדי לתקן את המשתמשים יתומים בזה אחר מאוחסנת (זה רק ידון משתמשים התייתם מתוך כניסות SQL רגיל), בקר מאמר מתוך מאגר הידע Microsoft Knowledge Base:
    274188 "פתרון בעיות של משתמשים Orphaned" בנושא ספרים מקוונים הושלמה
  • אם ההעברה של כניסות וסיסמאות הוא חלק של מעבר מסדי נתונים חדשים בשרת שבו פועל SQL Server, עיין במאמר הבא ב- תיאור של זרימת העבודה והשלבים מאגר הידע Microsoft Knowledge Base מעורב:
    314546 כיצד להעביר מסדי נתונים בין מחשבים שבהם פועל שרת SQL
  • באפשרותך לעשות זאת עקב בהליך המערכת מאוחסנים sp_addlogin , המאפשר כניסה להיווצר על-ידי הפרמטר @encryptopt באמצעות סיסמה מוצפנת. לקבלת מידע נוסף אודות הליך זה, ראה "sp_addlogin (T-SQL)" בנושא ספרים מקוונים של שרת SQL.
  • כברירת מחדל, רק חברים של תפקיד שרת sysadminfixed ניתן לבחור מתוך טבלת sysxlogins . אלא אם כן חבר בקבוצת תפקיד sysadmin מעניקה את הצורך הרשאות, משתמשי קצה אין אפשרות ליצור או להפעיל פרוצדורות אלה.
  • גישה זו לא ינסה להעביר את מסד הנתונים המוגדר כברירת מחדל מידע עבור כניסה מסוימת כיוון ברירת מחדל מסד הנתונים עשוי לא תמיד קיים בשרת היעד. כדי להגדיר את מסד הנתונים המוגדר כברירת מחדל עבור כניסה, באפשרותך להשתמש בהליך המערכת מאוחסנים sp_defaultdb על-ידי העברתן את שם הכניסה של ברירת מחדל מסד הנתונים כארגומנטים. לקבלת מידע נוסף אודות שימוש בהליך זה, עיין בנושא "sp_defaultdb" ספרים מקוונים של שרת SQL.
  • במהלך ההעברה של כניסות בין מופעים של SQL שרת, אם סדר המיון של שרת המקור אינה תלוית רישיות ומיון הסדר של שרת היעד הוא תלוי רישיות, עליך להזין את כל תווים אלפביתיים בסיסמאות כמו תווי אותיות רישיות לאחר ההעברה של התחברויות לשרת היעד. אם סדר המיון של שרת המקור תלוי רישיות וסדר מיון של שרת היעד הוא ללא תלות ברישיות, לא יהיה באפשרותך להיכנס באמצעות כניסות שהועברו שימוש בהליך המתואר במאמר זה, אלא אם כן הסיסמה המקורית מכיל תווים אלפביתיים או אלא אם כל התווים אלפביתי הסיסמה המקורית הם תווי אותיות רישיות. אם שני שרתי הם תלוי רישיות או שני שרתי הם תלויי רישיות, לא תיתקל בעיה זו. זהו אפקט בצד של האופן שבו מטפל שרת SQL סיסמאות. לקבלת מידע נוסף, ראה "אפקט על סיסמאות של שינוי המיון נושא הזמנות"ב- SQL Server 7.0 ספרים מקוונים.
  • בעת הפעלת הפלט מתוך קובץ ה-script sp_help_revlogin בשרת היעד, אם שרת היעד כבר יש כניסה שהוגדרו עם שם זהה לזה באחד כניסות על הפלט script, ייתכן שתראה השגיאה הבאה בעת ביצוע של הפלט של קובץ ה-script sp_help_revlogin :
    שרת: הודעת 15025, רמה 16, מצב 1 ההליך sp_addlogin, קו 56
    כניסה 'test1' כבר קיים.
    באופן דומה, אם קיימת כניסה שונים עם אותו ערך SID בשרת זה בעת אחד מנסה להוסיף, אתה מקבל הודעת השגיאה הבאה:
    שרת: Msg 15433, רמת 16, מצב 1 ההליך sp_addlogin, 93 קו
    שסופקו פרמטר @sid נמצא בשימוש.
    לכן, עליך בקפידה סקור את הפלט של פקודות אלה, לבחון את התוכן של הטבלה sysxlogins , ולטפל שגיאות אלה בהתאם.
  • ערך SID עבור כניסה מסוים משמש כבסיס עבור יישום גישה ברמת מסד נתונים ב- SQL Server. לכן, אם זהה כניסה יש שני ערכים שונים עבור במזהה האבטחה ברמת מסד הנתונים (לשניים מסדי נתונים שונים באותו שרת), הכניסה בלבד תהיה גישה אליו מסד הנתונים שאת SID תואם לערך ב- syslogins עבור כניסה זו. מצב כזה עשוי להתרחש אם שני מסדי הנתונים שאלה ומספרם צומצם מתוך שני שרתים שונים. כדי לפתור בעיה זו בעיה, כניסה הנדון יצטרך להסיר באופן ידני מתוך מסד נתונים המכיל אי-התאמה SID באמצעות sp_dropuser שגרה מאוחסנת ולאחר מכן שנוספו על-ידי שימוש בהליך sp_adduser מאוחסנת.

מאפיינים

Article ID: 246133 - Last Review: יום רביעי 19 יוני 2013 - Revision: 1.0
המידע במאמר זה חל על:
  • Microsoft SQL Server 7.0 Standard Edition
  • Microsoft SQL Server 2000 Personal Edition
  • Microsoft SQL Server 2000 Standard Edition
  • Microsoft SQL Server 2000 Workgroup Edition
  • Microsoft SQL Server 2000 Developer Edition
  • Microsoft SQL Server 2000 Enterprise Edition
  • Microsoft SQL Server 2005 Standard Edition
  • Microsoft SQL Server 2005 Workgroup Edition
  • Microsoft SQL Server 2005 Developer Edition
  • Microsoft SQL Server 2005 Enterprise Edition
מילות מפתח 
kbsqlsetup kbhowtomaster kbinfo kbmt KB246133 KbMthe
תרגום מכונה
חשוב: מאמר זה תורגם באמצעות תוכנת תרגום מכונה של Microsoft וייתכן שנערך לאחר מכן על-ידי קהילת Microsoftבאמצעות טכנולוגייתCommunity Translation Framework (CTF) או באמצעות תרגום אנושי. Microsoft מציעה לך גם מאמרים בתרגום אנושי, מאמרים בתרגום מכונה ומאמרים שנערכו על ידי הקהילה כדי לאפשר גישה למאמרים הקיימים במאגר הידע (Knowledge Base) שלMicrosoft בשפות שונות. מאמרים מתורגמים יכולים להכיל שגיאות באוצר המילים, בתחביר או בדקדוק. Microsoft אינה אחראית לחוסר דיוק, שגיאות או נזקים שייגרמו כתוצאה מטעויות בתכנים או משימוש בתכנים על ידי לקוחותיה.
כותרת מאמר זה באנגלית: 246133

ספק משוב

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com