วิธีการถ่ายโอนเข้าสู่ระบบและรหัสผ่านระหว่างอินสแตนซ์ของ SQL Server

การแปลบทความ การแปลบทความ
หมายเลขบทความ (Article ID): 246133 - ผลิตภัณฑ์ที่เกี่ยวข้องในบทความนี้
ขยายทั้งหมด | ยุบทั้งหมด

เนื้อหาบนหน้านี้

สรุป

หลังจากที่คุณย้ายฐานข้อมูลไปยังเซิร์ฟเวอร์ใหม่ ผู้ใช้อาจไม่สามารถเข้าสู่ระบบไปยังเซิร์ฟเวอร์ใหม่ แทน ได้รับข้อความแสดงข้อผิดพลาดต่อไปนี้:
msg 18456 ระดับ 16 สถานะ 1
เข้าสู่ระบบล้มเหลวสำหรับผู้ใช้ '% ls'
คุณต้องโอนย้ายการเข้าสู่ระบบและรหัสผ่านไปยังเซิร์ฟเวอร์ใหม่ บทความนี้อธิบายวิธีคุณถ่ายโอนเข้าสู่ระบบและรหัสผ่านไปยังเซิร์ฟเวอร์ใหม่

วิธีการถ่ายโอนเข้าสู่ระบบและรหัสผ่านระหว่างเซิร์ฟเวอร์ที่รัน SQL Server 7.0

ลักษณะการทำงานในการโอนย้ายของออปเจ็กต์ SQL Server 7.0 ข้อมูลแปลงบริการ (DTS) โอนล็อกอินและผู้ใช้ระหว่างเซิร์ฟเวอร์ที่สอง แต่จะไม่ถ่ายโอนรหัสผ่านสำหรับการล็อกอินของ SQL Server ที่รับรองความถูกต้อง การถ่ายโอนเข้าสู่ระบบและรหัสผ่านจากเซิร์ฟเวอร์ที่กำลังเรียกใช้ SQL Server 7.0 ไปยังเซิร์ฟเวอร์อื่นที่กำลังเรียกใช้ SQL Server 7.0 ทำตามขั้นตอนในส่วน "วิธีการแก้ไขทั้งหมดเพื่อล็อกอินของการโอนย้ายและรหัสผ่านระหว่างรุ่นต่าง ๆ ของ SQL Server"

วิธีการถ่ายโอนเข้าสู่ระบบและรหัสผ่านจาก SQL Server 7.0 ไป ยัง SQL Server 2000 หรือระ หว่างเซิร์ฟเวอร์ที่รัน SQL Server 2000

เมื่อต้องการถ่ายโอนเข้าสู่ระบบและรหัสผ่านจากเซิร์ฟเวอร์ SQL Server 7.0 ไปยังอินสแตนซ์ ของ SQL Server 2000 หรือระ หว่างอินสแตนซ์ที่สองของ SQL Server 2000 คุณสามารถใช้สร้าง DTS แพคเกจโอนล็อกอินของงานใน SQL Server 2000 โดยให้ทำตามขั้นตอนต่อไปนี้::
  1. เชื่อมต่อกับเซิร์ฟเวอร์ปลายทางของ SQL Server 2000 ย้ายไปยังบริการการแปลงข้อมูลในตัวจัดการองค์กรของ SQL Server ขยายโฟลเดอร์ คลิกขวาแพคเกจท้องถิ่นแล้ว คลิกแพคเกจใหม่.
  2. หลังจาก DTS แพ็คเกจเปิดตัวออกแบบ คลิกการโอนย้ายการล็อกอินของงานในการงานเมนู กรอกรายละเอียดเกี่ยวกับการแหล่ง:,ปลายทางและล็อกอินแท็บตามความเหมาะสม

    สิ่งสำคัญเซิร์ฟเวอร์ปลายทางของ SQL Server 2000 ไม่สามารถเรียกใช้รุ่น 64 บิตของ SQL Server 2000 คอมโพเนนต์ DTS รุ่น 64 บิตของ SQL Server 2000 ไม่มีอยู่ ถ้าคุณกำลังนำเข้าล็อกอินจากอินสแตนซ์ของ SQL Server ที่อยู่บนคอมพิวเตอร์ที่แยกต่างหาก ของอินสแตนซ์ของ SQL Server จะต้องทำงานภายใต้บัญชีโดเมนในการทำงาน

    หมายเหตุ:วิธี DTS จะโอนย้ายการรหัสผ่านแต่ไม่ SID เดิม ถ้าไม่มีสร้างล็อกอิน โดยใช้ SID เดิม และฐานข้อมูลผู้ใช้จะถูกโอนย้ายไปยังเซิร์ฟเวอร์ใหม่ยัง ฐานข้อมูลผู้ใช้จะสามารถ orphaned จากล็อกอิน เมื่อต้องการถ่ายโอน SID ต้นฉบับ และการเลี่ยงผ่านผู้ใช้ orphaned ทำตามขั้นตอนในส่วน "วิธีการแก้ไขทั้งหมดเพื่อล็อกอินของการโอนย้ายและรหัสผ่านระหว่างรุ่นต่าง ๆ ของ SQL Server"

วิธีการถ่ายโอนเข้าสู่ระบบและรหัสผ่านระหว่างอินสแตนซ์ของ SQL Server 2005

สำหรับข้อมูลเพิ่มเติมเกี่ยวกับวิธีการถ่ายโอนเข้าสู่ระบบและรหัสผ่านระหว่างอินสแตนซ์ของ SQL Server 2005 คลิกหมายเลขบทความต่อไปนี้เพื่อดูบทความในฐานความรู้ของ Microsoft:
918992วิธีการโอนย้ายการเข้าสู่ระบบและรหัสผ่านระหว่างอินสแตนซ์ของ SQL Server 2005

ความละเอียดที่สมบูรณ์เพื่อโอนย้ายการเข้าสู่ระบบและรหัสผ่านระหว่างรุ่นต่าง ๆ ของ SQL Server

เมื่อต้องการทำเช่นนี้ ให้ใช้วิธีการใดวิธีการหนึ่งต่อไปนี้
หมายเหตุ
  • สคริปต์ในวิธีการต่อไปนี้สร้างกระบวนการจัดเก็บสองที่มีชื่อนี้sp_hexadecimalขั้นตอนการจัดเก็บ และการsp_help_revloginขั้นตอนในการจัดเก็บของคุณวางแผนหลักdatabase.
  • สคริปต์จะขึ้นอยู่กับตารางระบบ SQL Server โครงสร้างของตารางเหล่านี้อาจเปลี่ยนแปลงระหว่างรุ่นของ SQL Server การเลือกโดยตรงจากตารางระบบคือ discouraged
  • ตรวจทาน remarks ในตอนท้ายของบทความนี้สำหรับข้อมูลเกี่ยวกับขั้นตอนในวิธีการที่สำคัญ
  • วิธีที่ 2 กำหนดล็อกอินไปยังหน้าที่

วิธีที่ 1:

วิธีนี้ใช้กับสถานการณ์สมมติต่อไปนี้:
  • คุณถ่ายโอนเข้าสู่ระบบและรหัสผ่านจาก SQL Server 7.0 ไปยัง SQL Server 7.0
  • คุณถ่ายโอนเข้าสู่ระบบและรหัสผ่านจาก SQL Server 7.0 ไปยัง SQL Server 2000
  • คุณถ่ายโอนเข้าสู่ระบบและรหัสผ่านระหว่างเซิร์ฟเวอร์ที่รัน SQL Server 2000
To transfer logins and passwords between different versions of SQL Server, follow these steps:
  1. Run the following script on the source SQL Server. Continue to step 2 when you finish creating thesp_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. After you create thesp_help_revloginstored procedure, run thesp_help_revloginprocedure from Query Analyzer on the source server. กระบวนการsp_help_revloginstored procedure can be used on both SQL Server 7.0 and SQL Server 2000. The output of thesp_help_revloginstored procedure is login scripts that create logins with the original SID and password. Save the output, and then paste and run it in Query Analyzer on the destination SQL Server. ตัวอย่าง::
    EXEC master..sp_help_revlogin
    

วิธีที่ 2

This method applies to the following scenarios:
  • You transfer logins and passwords from SQL Server 7.0 to SQL Server 2005.
  • You transfer logins and passwords from SQL Server 2000 to SQL Server 2005.
  • You assign logins to roles.
To transfer logins and passwords between different versions of SQL Server and then assign logins to roles, follow these steps:
  1. Run the following script on the source 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. Save the output, and then paste and run the output in SQL Server Management Studio on the destination SQL Server 2005.
หมายเหตุ:If the source SQL Server contains a login that has a blank password, the output contains a statement that resembles the following.
CREATE LOGIN LoginName WITH PASSWORD = '', CHECK_POLICY = OFF, SID = MySID

Remarks

  • Review the output script carefully before you run it on the destination SQL Server. If you have to transfer logins to an instance of SQL Server in a different domain than the source instance of SQL Server, edit the script generated by thesp_help_revloginprocedure, and replace the domain name with the new domain in thesp_grantloginใบแจ้งยอด Because the integrated logins granted access in the new domain will not have the same SID as the logins in the original domain, the database users will be orphaned from these logins. To resolve these orphaned users, see the articles referenced in the following bullet item. If you transfer integrated logins between instances of SQL Servers in the same domain, the same SID is used and the user is not likely to be orphaned.
  • After you move the logins, users may not have permissions to access databases that have also been moved. This problem is described as an "orphaned user". If you try to grant the login access to the database, it may fail indicating the user already exists:
    Microsoft SQL-DMO (ODBC SQLState: 42000) Error 15023: User or role '%s' already exists in the current database.
    For instructions about how to map the logins to the database users to resolve orphaned SQL Server logins and integrated logins, see the following article in the Microsoft Knowledge Base:
    240872วิธีการแก้ไขสิทธิ์ในการตัดสินค้าจากคลังเมื่อคุณย้ายฐานข้อมูลระหว่างเซิร์ฟเวอร์ที่รัน SQL Server
    For instructions about using thesp_change_users_loginstored procedure to correct the orphaned users one-by-one (this will only address users orphaned from standard SQL logins), see the following article in the Microsoft Knowledge Base:
    274188"Troubleshooting Orphaned Users" topic in Books Online is incomplete
  • If the transfer of logins and passwords is part of a move of databases to a new server running SQL Server, see the following article in the Microsoft Knowledge Base for a description of the workflow and steps involved:
    314546How to move databases between computers that are running SQL Server
  • You can do this because of the@encryptoptพารามิเตอร์ในการsp_addloginsystem stored procedure, that allows a login to be created by using the encrypted password. For more information about this procedure, see the "sp_addlogin (T-SQL)" topic in SQL Server Books Online.
  • By default, only members of the sysadminfixed server role can select from thesysxloginsตาราง: Unless a member of the sysadmin role grants the necessary permissions, end users cannot create or run these stored procedures.
  • วิธีการนี้ไม่ได้ลองการถ่ายโอนฐานข้อมูลเริ่มต้นสำหรับการเข้าสู่ระบบเฉพาะได้เนื่องจากฐานข้อมูลการเริ่มต้นอาจไม่เสมอมีอยู่บนเซิร์ฟเวอร์ปลายทาง เมื่อต้องการกำหนดฐานข้อมูลเริ่มต้นสำหรับการเข้าสู่ระบบเป็น คุณสามารถใช้การsp_defaultdbระบบเก็บกระบวนการ โดยการส่งผ่านนั้นชื่อล็อกอินและฐานข้อมูลการเริ่มต้นเป็นอาร์กิวเมนต์ สำหรับข้อมูลเพิ่มเติมเกี่ยวกับการใช้กระบวนการนี้ ให้ดูที่หัวข้อ "sp_defaultdb" ใน SQL Server หนังสือออนไลน์
  • ในระหว่างการโอนย้ายของล็อกอินระหว่างอินสแตนซ์ของ SQL Server ถ้าลำดับการเรียงของเซิร์ฟเวอร์ต้นทางคือ case-insensitive และลำดับการเรียงของเซิร์ฟเวอร์ปลายทางคือ case-sensitive คุณต้องป้อนอักขระ alphabetical ทั้งหมดในรหัสผ่านเป็นอักขระตัวพิมพ์ใหญ่หลังจากการโอนย้ายของล็อกอินไปยังเซิร์ฟเวอร์ปลายทาง ถ้าลำดับการเรียงของเซิร์ฟเวอร์ต้นทาง case-sensitive และลำดับการเรียงของเซิร์ฟเวอร์ปลายทางเป็น case-insensitive คุณจะไม่สามารถเข้าสู่ระบบ ด้วยการล็อกอินของการโอนย้ายโดยใช้ขั้นตอน outlined ในบทความนี้ เว้นแต่ ว่าไม่มีอักขระ alphabetical ประกอบด้วยรหัสผ่านเดิม หรือเว้นแต่ ว่าอักขระ alphabetical ทั้งหมดในรหัสผ่านเดิมที่มีอักขระตัวพิมพ์ใหญ่ ถ้าเซิร์ฟเวอร์ทั้งสองมี case-sensitive หรือเซิร์ฟเวอร์ทั้งสองมี case-insensitive คุณจะไม่พบปัญหานี้ นี่คือลักษณะพิเศษของด้านของลักษณะว่า SQL Server จัดการรหัสผ่าน สำหรับข้อมูลเพิ่มเติม ให้ดูที่หัวข้อ "ใบลักษณะพิเศษในรหัสผ่านของเปลี่ยนเรียงสั่ง" ใน SQL Server 7.0 หนังสือออนไลน์
  • เมื่อคุณเรียกใช้จากนั้นsp_help_revloginสคริปต์บนเซิร์ฟเวอร์ปลายทาง หากเซิร์ฟเวอร์ปลายทางมีอยู่แล้วเข้าสู่ระบบที่กำหนด ด้วยชื่อเดียวกันเข้าสู่ระบบในสคริปต์การแสดงผลอย่างใดอย่างหนึ่ง คุณอาจพบข้อผิดพลาดต่อไปนี้เมื่อการดำเนินการของผลลัพธ์ของการsp_help_revloginสคริปต์:
    เซิร์ฟเวอร์: ข่าวสารเกี่ยวกับ 15025 ระดับ 16 สถานะ 1, sp_addlogin กระบวนงาน บรรทัด 56
    การเข้าสู่ระบบ 'test1' อยู่แล้ว
    likewise ถ้าการเข้าสู่ระบบอื่นที่มีอยู่ ด้วย SID ค่าเดียวบนเซิร์ฟเวอร์นี้เป็นที่คุณกำลังพยายามเพิ่ม คุณได้รับข้อความแสดงข้อผิดพลาดต่อไปนี้:
    ข่าวสารเกี่ยวกับเซิร์ฟเวอร์: 15433 ระดับ 16 สถานะ 1, sp_addlogin กระบวนงาน บรรทัด 93
    พารามิเตอร์ที่ให้มา @ sid ถูกใช้งาน
    ดังนั้น คุณต้องอย่างรอบคอบทบทวนคำสั่งเหล่านี้ได้จาก ตรวจสอบเนื้อหาของsysxloginsตาราง และจัดการข้อผิดพลาดเหล่านี้ตามลำดับ
  • มีใช้ค่า SID สำหรับการเข้าสู่ระบบเฉพาะเป็นข้อมูลพื้นฐานสำหรับการใช้การเข้าถึงระดับของฐานข้อมูลใน SQL Server ดังนั้น ถ้ามีการเข้าสู่ระบบเดียวกันได้สองค่าที่แตกต่างกันสำหรับ SID ที่ระดับฐานข้อมูล (ในการฐานข้อมูลแตกต่างกันสองบนเซิร์ฟเวอร์นั้น), ล็อกอินจะเท่านั้นสามารถเข้าถึงฐานข้อมูลนั้น SID ตรงกับค่าในsysloginsสำหรับการล็อกอิน สถานการณ์เช่นอาจเกิดขึ้นได้ถ้าฐานข้อมูลสองที่สอบถามได้ถูกรวมบัญชีจากเซิร์ฟเวอร์ที่แตกต่างกันสอง เมื่อต้องการแก้ไขปัญหานี้ เข้าสู่ระบบแบบสอบถามจะจำเป็นต้องถูกเอาออกจากฐานข้อมูลที่มี SID ที่ไม่ตรงกัน โดยใช้ด้วยตนเองsp_dropuserขั้นตอนการจัดเก็บ แล้ว เพิ่มอีกครั้ง โดยใช้การsp_adduserกระบวนงานที่เก็บไว้

คุณสมบัติ

หมายเลขบทความ (Article ID): 246133 - รีวิวครั้งสุดท้าย: 17 กันยายน 2554 - Revision: 3.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 2005 Server Workgroup
  • Microsoft SQL Server 2005 Developer Edition
  • Microsoft SQL 2005 Server Enterprise
Keywords: 
kbhowtomaster kbinfo kbmt KB246133 KbMtth
แปลโดยคอมพิวเตอร์
ข้อมูลสำคัญ: บทความนี้แปลโดยซอฟต์แวร์การแปลด้วยคอมพิวเตอร์ของ Microsoft แทนที่จะเป็นนักแปลที่เป็นบุคคล Microsoft มีบทความที่แปลโดยนักแปลและบทความที่แปลด้วยคอมพิวเตอร์ เพื่อให้คุณสามารถเข้าถึงบทความทั้งหมดในฐานความรู้ของเรา ในภาษาของคุณเอง อย่างไรก็ตาม บทความที่แปลด้วยคอมพิวเตอร์นั้นอาจมีข้อบกพร่อง โดยอาจมีข้อผิดพลาดในคำศัพท์ รูปแบบการใช้ภาษาและไวยากรณ์ เช่นเดียวกับกรณีที่ชาวต่างชาติพูดผิดเมื่อพูดภาษาของคุณ 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