Làm th? nào đ? chuy?n các tin đăng nh?p và m?t kh?u gi?a các trư?ng h?p c?a SQL Server

D?ch tiêu đ? D?ch tiêu đ?
ID c?a bài: 246133 - Xem s?n ph?m mà bài này áp d?ng vào.
Bung t?t c? | Thu g?n t?t c?

? Trang này

TÓM T?T

Sau khi b?n di chuy?n cơ s? d? li?u vào m?t máy ch? m?i, ngư?i dùng có th? không có th? đăng nh?p vào h? ph?c v? m?i. Thay vào đó, h? nh?n đư?c l?i sau tin nh?n:
Msg 18456, c?p 16, bang 1
Đăng nh?p không th? cho ngư?i dùng '% ls'.
B?n ph?i chuy?n các tin đăng nh?p và m?t kh?u ph?c v? m?i. Bài vi?t này mô t? làm th? nào b?n chuy?n tên đăng nh?p và m?t kh?u máy ch? m?i.

Làm th? nào chuy?n tên đăng nh?p và m?t kh?u gi?a máy ch? đang ch?y SQL Server 7.0

Đ?i tư?ng d?ch v? d? li?u bi?n đ?i (DTS) SQL Server 7.0 Chuy?n tính năng chuy?n tên đăng nh?p và ngư?i s? d?ng gi?a hai máy ch?, nhưng nó có ph?i không chuy?n m?t kh?u cho SQL Server ch?ng th?c đăng nh?p. Đ? chuy?n tên đăng nh?p và m?t kh?u t? m?t máy ch? đang ch?y SQL Server 7.0 khác máy ch? đang ch?y SQL Server 7.0, làm theo các bư?c trong ph?n "Đ? phân gi?i đ?y đ? đ? chuy?n giao tên đăng nh?p và m?t kh?u gi?a các phiên b?n khác nhau c?a SQL Server".

Làm th? nào đ? chuy?n giao tên đăng nh?p và m?t kh?u t? SQL Máy ch? 7.0 cho SQL Server 2000 ho?c gi?a các máy ch? đang ch?y SQL Server 2000

Chuy?n tên đăng nh?p và m?t kh?u t? m?t máy ch? SQL Server 7.0 đ? m?t th? hi?n c?a SQL Server 2000, ho?c gi?a hai th? hi?n c?a SQL Server 2000, b?n có th? s? d?ng m?i DTS gói chuy?n Logins Task trong SQL Server 2000. Để thực hiện việc này, hãy làm theo những bước sau:
  1. K?t n?i t?i h? ph?c v? đích SQL Server 2000, di chuy?n sang d?ch v? chuy?n đ?i d? li?u trong SQL Server qu?n l? doanh nghi?p, m? r?ng thư m?c, nh?p chu?t ph?i Đ?a phương gói, và sau đó nh?p vào Tr?n gói m?i.
  2. Sau khi các DTS gói thi?t k? m?, b?m Chuy?n giao nhi?m v? Logins trên các Nhi?m v? tr?nh đơn. Hoàn t?t các thông tin v? các Ngu?n, Đi?m đ?nĐăng nh?p Tab như là thích h?p.

    Quan tr?ng Máy ch? đích SQL Server 2000 không th? ch?y các phiên b?n 64-bit c?a SQL Server 2000. DTS thành ph?n cho các phiên b?n 64-bit c?a SQL Server 2000 không có s?n. N?u b?n đang chuy?n nh?p đăng nh?p t? m?t th? hi?n c?a SQL Server đó là trên m?t máy tính riêng bi?t, b?n th? hi?n c?a SQL Server s? ph?i ch?y dư?i m?t trương m?c vùng đ? hoàn thành nhi?m v?.

    Chú ý Phương pháp DTS s? chuy?n giao các m?t kh?u nhưng không các SID ban đ?u. N?u m?t tên đăng nh?p không đư?c t?o ra b?ng cách s? d?ng b?n g?c SID và ngư?i s? d?ng cơ s? d? li?u c?ng đư?c chuy?n giao cho m?t máy ch? m?i, nh?ng ngư?i s? d?ng cơ s? d? li?u s? m? côi t? đăng nh?p. Đ? chuy?n SID g?c và b? qua các m? côi ngư?i s? d?ng, h?y làm theo các bư?c trong ph?n "Đ? phân gi?i đ?y đ? đ? chuy?n giao tên đăng nh?p và m?t kh?u gi?a các phiên b?n khác nhau c?a SQL Server".

Làm th? nào đ? chuy?n các tin đăng nh?p và m?t kh?u gi?a các trư?ng h?p c?a SQL Server 2005

Đ? bi?t thêm chi ti?t v? làm th? nào đ? chuy?n các tin đăng nh?p và m?t kh?u gi?a các trư?ng h?p c?a SQL Server 2005, nh?p vào s? bài vi?t sau đ? xem bài vi?t trong cơ s? ki?n th?c Microsoft:
918992Làm th? nào đ? chuy?n các tin đăng nh?p và m?t kh?u gi?a các trư?ng h?p c?a SQL Server 2005

Đ? phân gi?i đ?y đ? đ? chuy?n các tin đăng nh?p và m?t kh?u gi?a các phiên b?n khác nhau c?a SQL Server

Để thực hiện việc này, sử dụng một trong các phương pháp sau.
Chú ý
  • Các k?ch b?n trong các phương pháp sau đây t?o hai th? t?c đư?c lưu tr? đư?c đ?t tên theo các sp_hexadecimal lưu tr? th? t?c và các sp_help_revlogin lưu tr? th? t?c t?i c?a b?n Th?c s? cơ s? d? li?u.
  • Các script đang ph? thu?c vào máy ch? SQL h? th?ng bàn. Cơ c?u c?a các b?ng có th? thay đ?i gi?a các phiên b?n c?a máy ch? SQL. Ch?n tr?c ti?p t? h? th?ng b?ng khuy?n khích.
  • Xem xét nh?ng nh?n xét ? ph?n cu?i c?a bài vi?t này cho quan tr?ng thông tin v? các bư?c trong các phương pháp.
  • Phương pháp 2 gán tên đăng nh?p cho vai tr?.

Phương pháp 1

Phương pháp này áp d?ng cho các k?ch b?n sau đây:
  • B?n truy?n tin đăng nh?p và m?t kh?u t? SQL Server 7.0 cho SQL Server 7.0.
  • B?n truy?n tin đăng nh?p và m?t kh?u t? SQL Server 7.0 cho SQL Server 2000.
  • B?n truy?n tin đăng nh?p và m?t kh?u gi?a máy ch? đang ch?y SQL Server 2000.
Đ? chuy?n các tin đăng nh?p và m?t kh?u gi?a các phiên b?n khác nhau c?a SQL Server, h?y làm theo các bư?c sau:
  1. Ch?y đo?n m? sau vào ngu?n SQL Server. Ti?p t?c bư?c 2 khi b?n k?t thúc vi?c t?o cácsp_help_revlogin th? t?c đư?c lưu tr?.
    ----- 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. Sau khi b?n t?o các sp_help_revlogin lưu tr? th? t?c, ch?y các sp_help_revlogin th? t?c t? phân tích truy v?n trên máy ch? ngu?n. Các sp_help_revlogin th? t?c đư?c lưu tr? có th? đư?c s? d?ng trên c? SQL Server 7.0 và SQL Server 2000. Đ?u ra c?a các sp_help_revlogin th? t?c đư?c lưu tr? là k?ch b?n đăng nh?p t?o ra các tin đăng nh?p v?i các b?n g?c SID và m?t kh?u. Ti?t ki?m đ?u ra, và sau đó dán và ch?y nó trong truy v?n Phân tích v? đi?m đ?n máy ch? SQL. Ví dụ:
    EXEC master..sp_help_revlogin
    

Phương pháp 2

Phương pháp này áp d?ng cho các k?ch b?n sau đây:
  • B?n truy?n tin đăng nh?p và m?t kh?u t? SQL Server 7.0 cho SQL Server 2005.
  • B?n truy?n tin đăng nh?p và m?t kh?u t? SQL Server 2000-SQL Server 2005.
  • B?n ch? đ?nh tên đăng nh?p cho vai tr?.
Đ? chuy?n các tin đăng nh?p và m?t kh?u gi?a các phiên b?n khác nhau c?a SQL Server và sau đó ch? đ?nh tên đăng nh?p cho vai tr?, h?y làm theo các bư?c sau:
  1. Ch?y đo?n m? sau vào ngu?n 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. Ti?t ki?m đ?u ra, và sau đó dán và ch?y đ?u ra trong SQL Server Management Studio vào đích SQL Server 2005.
Chú ý N?u ngu?n SQL Server ch?a m?t đăng nh?p có m?t kh?u tr?ng, đ?u ra có m?t tuyên b? tương t? như dư?i đây.
CREATE LOGIN LoginName WITH PASSWORD = '', CHECK_POLICY = OFF, SID = MySID

Nh?n xét

  • Xem l?i đo?n m? đ?u ra m?t cách c?n th?n trư?c khi b?n ch?y nó trên các đi?m đ?n máy ch? SQL. N?u b?n có th? chuy?n giao tên đăng nh?p cho m?t th? hi?n c?a SQL Máy ch? trong m?t tên mi?n khác v?i ví d? m? ngu?n c?a SQL Server, ch?nh s?a các k?ch b?n đư?c t?o ra b?i các sp_help_revlogin th? t?c, và thay th? tên mi?n tên v?i tên mi?n m?i trong cácsp_grantlogin phát bi?u. B?i v? các tin đăng nh?p tích h?p c?p quy?n truy c?p vào các tên mi?n m?i s? không có SID tương t? như các tin đăng nh?p trong tên mi?n g?c, các cơ s? d? li?u ngư?i dùng s? đư?c m? côi t? các tin đăng nh?p. Đ? gi?i quy?t nh?ng m? côi ngư?i s? d?ng, xem các bài vi?t đư?c tham chi?u trong m?c đ?n sau. N?u b?n chuy?n tên đăng nh?p tích h?p gi?a các trư?ng h?p c?a các máy ch? SQL trong cùng m?t tên mi?n, SID tương t? đư?c s? d?ng và ngư?i s? d?ng không ph?i là kh? năng đư?c m? côi.
  • Sau khi b?n di chuy?n các tin đăng nh?p, ngư?i dùng có th? không có quy?n đ? truy c?p vào cơ s? d? li?u c?ng đ? đư?c di chuy?n. V?n đ? này đư?c mô t? như m?t "m? côi ngư?i dùng". N?u b?n c? g?ng đ? c?p quy?n truy c?p đăng nh?p vào cơ s? d? li?u, nó có th? không cho th?y ngư?i dùng đ? t?n t?i:
    Microsoft SQL-DMO (ODBC SQLState: 42000) l?i 15023: ngư?i s? d?ng ho?c vai tr? '% s' đ? t?n t?i trong cơ s? d? li?u hi?n t?i.
    Đ? đư?c hư?ng d?n v? làm th? nào đ? l?p b?n đ? các tin đăng nh?p đ? ngư?i s? d?ng cơ s? d? li?u đ? gi?i quy?t m? côi SQL Server đăng nh?p và đăng nh?p tích h?p, Xem bài vi?t sau trong cơ s? ki?n th?c Microsoft:
    240872 Làm th? nào đ? gi?i quy?t các v?n đ? quy?n khi b?n di chuy?n m?t cơ s? d? li?u gi?a các máy ch? đang ch?y SQL Server
    Đ? đư?c hư?ng d?n v? cách s? d?ng các sp_change_users_login lưu tr? th? t?c đ? kh?c ph?c nh?ng ngư?i s? d?ng m? côi cái m?t (đi?u này s? ch? có đ?a ch? ngư?i dùng m? côi t? tiêu chu?n SQL đăng nh?p), xem sau đây bài vi?t trong cơ s? ki?n th?c Microsoft:
    274188 "Gi?i đáp th?c m?c ngư?i dùng Orphaned" ch? đ? trong cu?n sách tr?c tuy?n là không đ?y đ?
  • N?u vi?c chuy?n giao các tin đăng nh?p và m?t kh?u là m?t ph?n c?a m?t di chuy?n cơ s? d? li?u vào m?t máy ch? m?i ch?y SQL Server, xem bài vi?t sau đây trong cơ s? ki?n th?c Microsoft cho m?t mô t? v? quy tr?nh làm vi?c và bư?c tham gia:
    314546 Làm th? nào đ? di chuy?n cơ s? d? li?u gi?a các máy tính đang ch?y SQL Server
  • B?n có th? làm đi?u này v? các @ encryptopt tham s? trong các sp_addlogin h? th?ng lưu tr? th? t?c, mà cho phép m?t đăng nh?p đư?c t?o ra b?i b?ng cách s? d?ng m?t kh?u đư?c m?t m? hóa. Đ? bi?t thêm chi ti?t v? th? t?c này, xem ch? đ? "sp_addlogin (T-SQL)" trong SQL Server sách tr?c tuy?n.
  • Theo m?c đ?nh, ch? có thành viên vai tr? máy ch? sysadminfixed có th? ch?n t? các sysxlogins b?ng. Tr? khi m?t thành viên c?a vai tr? Ilos c?p c?n thi?t c?p phép, ngư?i dùng không th? t?o ho?c ch?y các th? t?c đư?c lưu tr?.
  • Cách ti?p c?n này không nên c? g?ng chuy?n cơ s? d? li?u m?c đ?nh thông tin cho m?t đăng nh?p đ?c bi?t v? cơ s? d? li?u m?c đ?nh có th? không ph?i luôn luôn t?n t?i trên máy ch? đích. Đ? xác đ?nh cơ s? d? li?u m?c đ?nh cho m?t đăng nh?p, b?n có th? s? d?ng các sp_defaultdb h? th?ng lưu tr? th? t?c b?ng cách g?i nó tên đăng nh?p và các m?c đ?nh cơ s? d? li?u như là đ?i s?. Cho bi?t thêm thông tin v? vi?c s? d?ng th? t?c này, xem ch? đ? "sp_defaultdb" trong SQL Server sách tr?c tuy?n.
  • Trong m?t chuy?n giao tên đăng nh?p gi?a trư?ng h?p c?a SQL Máy ch?, n?u th? t? s?p x?p c?a các máy ch? ngu?n là qu?n và phân lo?i đ?t hàng c?a máy ch? đích là ch?, b?n ph?i nh?p t?t c? k? t? th? t? ch? cái trong m?t kh?u như k? t? ch? hoa sau khi vi?c chuy?n giao c?a đăng nh?p vào h? ph?c v? đích. N?u th? t? s?p x?p c?a các máy ch? ngu?n là ch? và th? t? s?p x?p c?a máy ch? đích là qu?n, b?n s? không th? đăng nh?p v?i tên đăng nh?p chuy?n b?ng cách s? d?ng các th? t?c đư?c nêu trong bài vi?t này, tr? khi m?t kh?u g?c có không có k? t? ch? cái ho?c tr? khi t?t c? các k? t? ch? cái trong g?c m?t kh?u là k? t? ch? hoa. N?u c? hai máy ch? ch? ho?c c? hai máy ch? đư?c qu?n, b?n s? không kinh nghi?m v?n đ? này. Đây là m?t tác d?ng ph? c?a quá tr?nh x? l? SQL Server m?t kh?u. Đ? bi?t thêm thông tin, xem "có hi?u l?c vào m?t kh?u c?a thay đ?i lo?i Đơn đ?t hàng"ch? đ? trong SQL Server 7.0 sách tr?c tuy?n.
  • Khi b?n ch?y s?n lư?ng t? các sp_help_revlogin k?ch b?n trên máy ch? đích, n?u máy ch? đích đ? có m?t tên đăng nh?p đư?c đ?nh ngh?a có cùng tên như là m?t trong các tin đăng nh?p vào đ?u ra k?ch b?n, b?n có th? xem các sau l?i khi th?c hi?n c?a đ?u ra c?a các sp_help_revlogin k?ch b?n:
    Máy ch?: Msg 15025, C?p 16, bang 1, th? t?c sp_addlogin, Line 56
    Đăng nh?p 'test1' đ? t?n t?i.
    Tương t?, n?u m?t đăng nh?p khác nhau t?n t?i v?i cùng m?t giá tr? SID trên máy ch? này là m?t trong nh?ng b?n đang c? g?ng đ? thêm, b?n nh?n đư?c thông báo l?i sau:
    Máy ch?: Msg 15433, C?p 16, bang 1, th? t?c sp_addlogin, Line 93
    Cung c?p tham s? @ sid đang dùng.
    V? v?y, b?n ph?i c?n th?n xem xét đ?u ra t? l?nh này, ki?m tra n?i dung c?a các sysxlogins b?ng, và gi?i quy?t các l?i này cho phù h?p.
  • Giá tr? SID cho m?t đăng nh?p c? th? đư?c s? d?ng làm cơ s? cho vi?c th?c hi?n truy c?p c?p cơ s? d? li?u trong SQL Server. V? v?y, n?u như v?y đăng nh?p có hai giá tr? khác nhau cho SID c?p cơ s? d? li?u (t?i hai khác nhau databases trên máy ch? đó), đăng nh?p s? ch? có quy?n truy c?p vào đó cơ s? d? li?u mà SID phù h?p v?i giá tr? trong syslogins cho r?ng đăng nh?p. M?t t?nh hu?ng có th? x?y ra n?u hai cơ s? d? li?u trong câu h?i đ? đư?c h?p nh?t t? hai máy ch? khác nhau. Đ? gi?i quy?t này v?n đ?, đăng nh?p trong câu h?i ph?i đư?c g? b? b?ng tay t? các cơ s? d? li?u này có m?t SID không phù h?p b?ng cách s? d?ng các sp_dropuser lưu tr? th? t?c, và sau đó thêm m?t l?n n?a b?ng cách s? d?ng các sp_adduser th? t?c đư?c lưu tr?.

Thu?c tính

ID c?a bài: 246133 - L?n xem xét sau cùng: 17 Tháng Chín 2011 - Xem xét l?i: 3.0
Áp d?ng
  • 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
T? khóa: 
kbsqlsetup kbhowtomaster kbinfo kbmt KB246133 KbMtvi
Máy d?ch
QUAN TRỌNG: Bài vi?t này đư?c d?ch b?ng ph?n m?m d?ch máy c?a Microsoft ch? không ph?i do con ngư?i d?ch. Microsoft cung c?p các bài vi?t do con ngư?i d?ch và c? các bài vi?t do máy d?ch đ? b?n có th? truy c?p vào t?t c? các bài vi?t trong Cơ s? Ki?n th?c c?a chúng tôi b?ng ngôn ng? c?a b?n. Tuy nhiên, bài vi?t do máy d?ch không ph?i lúc nào c?ng hoàn h?o. Lo?i bài vi?t này có th? ch?a các sai sót v? t? v?ng, cú pháp ho?c ng? pháp, gi?ng như m?t ngư?i nư?c ngoài có th? m?c sai sót khi nói ngôn ng? c?a b?n. Microsoft không ch?u trách nhi?m v? b?t k? s? thi?u chính xác, sai sót ho?c thi?t h?i nào do vi?c d?ch sai n?i dung ho?c do ho?t đ?ng s? d?ng c?a khách hàng gây ra. Microsoft c?ng thư?ng xuyên c?p nh?t ph?n m?m d?ch máy này.
Nh?p chu?t vào đây đ? xem b?n ti?ng Anh c?a bài vi?t này:246133

Cung cấp Phản hồi

 

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