이전 버전의 SQL Server 실행 하는 SQL Server 인스턴스 간에 로그인 및 암호를 전송 하는 방법

요약

참고: SQL Server 2005 또는 이후 버전이 실행 중인 인스턴스 간에 로그인을 전송 하 여 SQL Server 인스턴스 간에 로그인 및 암호를 전송 하는 방법을참조 하십시오.
새 서버로 데이터베이스를 이동한 후 사용자는 새 서버에 로그인 할 수 없습니다. 대신 다음과 같은 오류 메시지가 나타납니다.
메시지 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 2000 또는 SQL Server 2000을 실행 하는 서버 간에 로그인 및 암호를 SQL Server 7.0에서 전송 하는 방법

로그인 및 암호를 SQL Server 7.0 서버에서 SQL Server 2000 또는 SQL Server 2000의 두 인스턴스 간에 인스턴스로 전송 하려면 SQL Server 2000에서 새로운 DTS 패키지 로그인 전송 작업을 사용할 수 있습니다. 이렇게 하려면, 다음 단계를 수행하십시오.
  1. SQL Server 2000 대상 서버에, SQL Server 엔터프라이즈 관리자에서 데이터 변환 서비스로 이동, 폴더를 확장 합니다, 로컬 패키지마우스 오른쪽 단추로 클릭 연결한 다음 새 패키지를 클릭 합니다.
  2. DTS 패키지 디자이너가 열리면, 작업 메뉴에서 로그인 전송 작업 을 클릭 합니다. 적절 한 원본, 대상로그인 탭에 대 한 정보를 입력 합니다.

    중요: 64 비트 버전의 SQL Server 2000 SQL Server 2000 대상 서버를 실행할 수 없습니다. 64 비트 버전의 SQL Server 2000 DTS 구성 요소를 사용할 수 있습니다. 별도 컴퓨터에 있는 SQL Server 인스턴스에서 로그인을 가져오는 경우 SQL Server 인스턴스에서 실행 되어야 합니다 작업을 완료 하려면 도메인 계정입니다.

    참고: DTS 방법을 암호 있지만 원본 SID 하지 전송 합니다. 원본 SID를 사용 하 여 만들어집니다 로그인 하는 경우 사용자 데이터베이스도 새 서버로 전송 되 면 데이터베이스 사용자가 로그인에서 분리 됩니다. 원본 SID를 전송 하 고 분리 된 사용자를 "서로 다른 버전의 SQL Server 간에 전송 로그인 및 암호를 완전 해결" 절에 나와 있는 단계를 따릅니다.

SQL Server 2005 인스턴스 간에 로그인 및 암호를 전송 하는 방법

SQL Server 2005 인스턴스 간에 로그인 및 암호를 전송 하는 방법에 대 한 자세한 내용은 Microsoft 기술 자료의 다음 문서 번호를 클릭 합니다.

918992 SQL Server 2005 인스턴스 간에 로그인과 암호를 전송 하는 방법

서로 다른 버전의 SQL Server 간에 로그인 및 암호를 전송 하는 방법

이렇게 하려면 다음 방법 중 하나를 사용 합니다.
참고
  • 다음 방법에 대 한 스크립트 sp_hexadecimal 저장 프로시저와 마스터 데이터베이스에서 sp_help_revlogin 저장 프로시저 라는 두 개의 저장된 프로시저를 만듭니다.
  • 스크립트는 SQL Server 시스템 테이블에 종속 됩니다. 이러한 테이블의 구조는 SQL Server 버전 간에 변경할 수 있습니다. 시스템 테이블에서 직접 선택 하면 좋습니다.
  • 방법의 단계에 대 한 자세한 내용은이 문서의 끝에 나오는 비고를 참조 합니다.
  • 역할에 로그인을 할당 하는 방법 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 프로시저 쿼리 분석기에서 실행 합니다. SQL Server 7.0과 SQL Server 2000에서 sp_help_revlogin 저장 프로시저를 사용할 수 있습니다. Sp_help_revlogin 저장 프로시저의 출력은 로그인 스크립트는 원래 SID와 암호를 사용 하 여 로그인을 만듭니다. 출력을 저장 붙여넣기 및 대상 SQL Server 쿼리 분석기에서 실행 합니다. 예를 들어:
    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 2005에서 SQL Server Management Studio 출력을 실행 합니다.
참고: 원본 SQL Server 빈 암호를 가진 로그인이 있으면 출력에 다음과 같은 문을 포함 되어 있습니다.
CREATE LOGIN LoginName WITH PASSWORD = '', CHECK_POLICY = OFF, SID = MySID

설명

  • 대상 SQL Server를 실행 하기 전에 출력 스크립트를 자세히 검토 합니다. SQL Server 원본 인스턴스는 다른 도메인에 있는 SQL Server 인스턴스로 로그인을 전송 해야 할 경우 sp_help_revlogin 프로시저에 의해 생성 된 스크립트를 편집 하 고 새 도메인의 도메인 이름을 바꿉니다의
    sp_grantlogin 문입니다. 새 도메인에 대 한 액세스는 동일한 로그인 SID 원래 도메인에 부여 하는 통합된 로그인, 데이터베이스 사용자가 이러한 로그인에서 분리 됩니다. 이러한 분리 된 사용자를 해결 하려면 다음 글머리 기호 항목에서 참조 하는 문서를 참조 하십시오. 동일한 도메인에 있는 SQL 서버 인스턴스 간에 통합된 로그인을 전송 하는 경우 동일한 SID가 사용 하 고 사용자가 분리 될 가능성이 거의 없습니다.
  • 로그인을 이동한 후 사용자는 이동 된 데이터베이스를 액세스할 수 있는 권한이 없을 수 있습니다. 이 문제를 "분리 된 사용자" 라고 합니다. 데이터베이스에 로그인 액세스 권한을 부여 하려고 하면 사용자가 이미 있는지 나타내는 실패할 수 있습니다.
    Microsoft SQL-DMO (ODBC SQLState: 42000) 오류 15023: 사용자 또는 역할 '%s'는 현재 데이터베이스에 이미 있습니다.
    분리 된 SQL Server 로그인과 통합된 로그인을 해결 하려면 지침에서는 로그인을 데이터베이스 사용자에 매핑하는 방법에 대 한 Microsoft 기술 자료의 다음 문서를 참조 하십시오.
    240872 SQL Server 실행 하는 서버 간에 데이터베이스를 이동할 때 사용 권한 문제를 해결 하는 방법

    원-바이-원 (이 다룰 표준 SQL 로그인에서 분리 된 사용자), 분리 된 사용자 sp_change_users_login 저장 프로시저를 사용 하 여 해결 하는 데 대 한 자세한 내용은 Microsoft 기술 자료의 다음 문서를 참조.
  • 로그인과 암호를 전송 부분에서는 SQL Server 실행 중인 새 서버로 데이터베이스를 이동 하는 경우 워크플로와 관련 된 작업 단계에 대 한 설명에 대 한 Microsoft 기술 자료의 다음 문서를 참조 하십시오.
    314546 SQL Server 실행 하는 컴퓨터 간에 데이터베이스를 이동 하는 방법

  • 이렇게 하려면 암호화 된 암호를 사용 하 여 만들 수에 대 한 로그인을 허용 하는 sp_addlogin 시스템 저장 프로시저에서 @encryptopt 매개 변수가 됩니다. 이 절차에 대 한 자세한 내용은 SQL Server 온라인 설명서의 "sp_addlogin (T-SQL)" 항목을 참조 하십시오.
  • 기본적으로 sysadminfixed 서버 역할의 구성원만 sysxlogins 테이블에서 선택할 수 있습니다. Sysadmin 역할의 구성원이 필요한 권한을 부여를 하지 않으면 최종 사용자가 만들거나 이러한 저장된 프로시저를 실행할 수 없습니다.
  • 이 방법은 기본 데이터베이스가 대상 서버에 항상 존재 하지 않을 수 있기 때문에 특정 로그인에 대 한 기본 데이터베이스 정보를 전송 하는 시도 하지 않습니다. 로그인의 기본 데이터베이스를 정의 하려면 인수로 로그인 이름과 기본 데이터베이스 전달 하 여 sp_defaultdb 시스템 저장 프로시저를 사용할 수 있습니다. 이 절차를 사용 하는 방법에 대 한 자세한 내용은 SQL Server 온라인 설명서의 "sp_defaultdb" 항목을 참조 하십시오.
  • SQL Server 인스턴스 간에 로그인을 전송 하는 동안 원본 서버의 정렬 순서가 대/소문자는 대상 서버의 정렬 순서는 대/소문자를 구분 하는 경우 입력 해야 알파벳 문자를 모두 암호에 대 문자가 로그인 전송 후 대상 서버에. 원본 서버의 정렬 순서는 대 소문자를 구분 하 고 대상 서버의 정렬 순서가 대/소문자가 않으면 원본 암호의 모든 알파벳 문자가 대문자 또는 원래 암호에 알파벳 문자가 포함 되어 있지 않으면이 문서에 설명 된 절차를 사용 하 여 전송 하는 로그인으로 로그인 할 수 없습니다. 두 서버는 대 소문자를 구분 하거나 모두를 하는 경우에이 문제가 발생 하지 않습니다. 이것은 SQL Server 암호를 처리 하는 방식 때문입니다. 자세한 내용은 SQL Server 7.0 온라인 설명서의 "효과에 암호 중 변경 정렬 순서" 항목을 참조 하십시오.
  • 출력 대상 서버에서 sp_help_revlogin 스크립트 실행 하면 대상 서버에 이미 정의 된 스크립트 출력에 있는 로그인 중 하 나와 이름이 같은 로그인 경우 sp_help_revlogin 스크립트의 출력을 실행할 때 다음 오류가 나타날 수 있습니다.
    서버: 메시지 15025, 수준 16, 상태 1, 프로시저 sp_addlogin 선 56
    'Test1' 로그인이 이미 있습니다.
    마찬가지로, 다른 로그인을 추가 하려고 하는 것과 같은 SID 값이이 서버에 있으면 다음과 같은 오류 메시지가 나타납니다.
    서버: 메시지 15433, 수준 16, 상태 1, 프로시저 sp_addlogin 선 93
    제공 된 매개 변수 @sid가 사용 중입니다.
    따라서 신중 하 게 이러한 명령의 출력 결과 검토, sysxlogins 테이블의 내용을 검사를 적절 하 게이 오류를 해결 하십시오.
  • 특정 로그인의 SID 값은 SQL Server 데이터베이스 수준 액세스를 구현 하기 위한 기준으로 사용 됩니다. 따라서 동일한 로그인에 데이터베이스 수준 (해당 서버에 두 개의 다른 데이터베이스)에 SID에 대 한 두 가지 다른 값에, 로그인 됩니다만 해야 syslogins 해당 로그인에 대 한 값과 일치 하는 SID가 있는 데이터베이스에 액세스할 수 있습니다. 이러한 상황에는 두 데이터베이스가 서로 다른 두 서버에서 통합 된 경우 발생할 수 있습니다. 이 문제를 해결 하려면 sp_dropuser 저장 프로시저를 사용 하 여 SID 일치 하지 않으며 sp_adduser 저장 프로시저를 사용 하 여 다시 추가 하 여 데이터베이스에서 수동으로 제거할 로그인 문제가 것입니다.
속성

문서 ID: 246133 - 마지막 검토: 2017. 2. 6. - 수정: 2

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

피드백