현재 오프라인 상태입니다. 인터넷에 다시 연결하기를 기다리고 있습니다.

데이터베이스 복원 후 데이터베이스에 대한 사용자 로그온 및 사용 권한이 올바르지 않을 수 있다

이 문서는 이전에 다음 ID로 출판되었음: KR168001
현상
이전 버전의 master 데이터베이스를 다시 만들거나 다시 로드한 후 핫 백업 서버와 같은 다른 SQL Server나 동일한 SQL Server에 SQL Server 사용자 데이터베이스의 덤프를 복원할 경우 데이터베이스에 대한 사용자 로그온 및 사용 권한이 올바르지 않을 수 있습니다.

이 문제는 다음과 같은 몇 가지 경우로 나타날 수 있습니다.
  • 6.x 서버에 로그온할 때 다음 오류가 발생할 수 있습니다.
    메시지 4002, 수준 14, 상태 1, 서버 Microsoft SQL Server, 줄 0
    로그인하지 못함
    DB-Library: 잘못된 로그인입니다.
  • 7.0 서버에 로그온할 때 다음 오류가 발생할 수 있습니다.
    메시지 18456, 수준 14, 상태 1,
    사용자 '%ls'이(가) 로그인하지 못했습니다.
  • 데이터베이스 내의 개체에 액세스하려고 할 때 다음 오류가 발생할 수 있습니다.
    메시지 229, 수준 14, 상태 1
    개체 %.*s, 데이터베이스 %.*s, 소유자 %.*s에 대한 %s 사용 권한이 거부되었습니다.
  • 로그인을 만들고 복원된 데이터베이스에 대한 액세스 권한을 부여하거나 데이터베이스에 사용자를 추가하려고 할 때 다음 오류가 발생할 수 있습니다.
    Microsoft SQL-DMO (ODBC SQLState: 42000) Error 15023: User or role '%s' already exists in the current database.
  • 사용자에게 이전에 권한이 없었던 개체에 대한 사용 권한이 부여될 수 있습니다.
원인
사용자 로그온 정보는 master 데이터베이스의 syslogins 테이블에 저장됩니다. 서버를 변경하거나, 이전 버전의 master 데이터베이스를 다시 만들거나 다시 로드함으로써 이 정보를 변경할 경우 사용자 데이터베이스 덤프가 만들어졌을 때와 정보가 달라질 수 있습니다. 사용자에 대한 로그온이 존재하지 않는 경우 서버에 로그온하려고 하면 로그인하지 못했다는 오류가 발생합니다. 사용자 로그온이 존재하지만 사용자 데이터베이스의 master에서 syslogins 및 sysusers 테이블에 있는 SUID 값(6.x의 경우)이나 SID 값(7.0의 경우)이 다른 경우 사용자 데이터베이스에서 예상한 것과는 다른 사용 권한이 사용자에게 부여될 수 있습니다.

참고 Microsoft SQL Server 2005를 사용하는 경우 syslogins 테이블 및 sysusers 테이블은 호환성 뷰로 구현됩니다. 이러한 뷰는 sys.sysloginssys.sysusers입니다. 호환성 뷰에 대한 자세한 내용은 SQL Server 2005 온라인 설명서의 "호환성 뷰(Transact-SQL)" 항목을 참조하십시오.
해결 과정
이 문제를 해결하려면 다음을 수행하십시오.
  • 현재 스크립트에서 로그온, 사용자 및 사용 권한을 추가할 수 있으면 스크립트에서 이를 제거하고 다시 만듭니다. 스크립트를 사용하여 서버 간에 로그인을 전송하는 예는 다음 Microsoft 기술 자료 문서를 참조하십시오.
    246133 HOWTO: SQL Server 인스턴스 간에 로그인 및 암호 전송
    240872 SQL Server를 실행하는 서버 사이에서 데이터베이스를 이동할 때 사용 권한 문제를 해결하는 방법
  • sp_change_users_login 저장 프로시저를 사용하여 syslogins, sysusers 및 sysalternates 테이블 간의 관계를 다시 연관시킬 수 있습니다. 그러나 연결 시 프로시저가 최상의 추정을 수행하며 사용자에게 과도한 액세스 권한을 부여할 수 있습니다. 먼저 Report 옵션을 사용하여 프로시저를 실행하면 변경될 사용자 목록이 생성됩니다. 나중에 영향을 받은 사용자에게 해당 사용 권한이 부여되었는지 확인해야 합니다. 또한 sp_change_users_login 프로시저는 백업이 복원된 데이터베이스에 로그온 및 사용자가 다른 순서로 만들어짐으로써 발생하는 사용 권한 문제를 해결하지 못한다는 점에 유의해야 합니다.
  • 사용자 데이터베이스를 로드하기 전에 사용자 데이터베이스를 서버에 덤프한 시점부터 master 데이터베이스의 덤프를 복원합니다. 이 작업을 수행하면 사용자 데이터베이스의 모든 사용자 정보가 master의 syslogins 테이블과 정확히 일치하게 됩니다.

    경고: master 데이터베이스는 전체 서버의 정보를 포함하고 있기 때문에 서버의 모든 데이터베이스에 영향을 미칩니다. master 데이터베이스를 복원하면 잘못된 사용 권한을 갖거나 손실된 추가 사용자 ID 및/또는 데이터베이스가 있을 수 있습니다. 백업한 이후에 master에 적용한 모든 변경 내용은 손실됩니다. 따라서 백업한 master 데이터베이스에 해당 사용자 데이터베이스 및 서버의 다른 모든 데이터베이스에 대한 올바른 정보가 들어 있는지 확인하고 이 방법을 사용해야 합니다.
  • Transfer Manager(6.x의 경우) 또는 DTS(7.0의 경우)를 사용하여 로그인을 복사합니다. 이 방법을 사용할 때 암호는 전송되지 않습니다.
  • 주 지원 공급자에게 문의하십시오.




Microsoft 제품 관련 기술 전문가들과 온라인으로 정보를 교환하시려면 Microsoft 뉴스 그룹에 참여하시기 바랍니다.
속성

문서 ID: 168001 - 마지막 검토: 04/12/2006 00:13:56 - 수정: 5.1

Microsoft SQL Server 6.0 Standard Edition, Microsoft SQL Server 6.5 Standard Edition, Microsoft SQL Server 7.0 Standard Edition, Microsoft SQL Server 2000 Standard Edition, Microsoft SQL Server 2005 Standard Edition, Microsoft SQL Server 2005 Developer Edition, Microsoft SQL Server 2005 Enterprise Edition, Microsoft SQL Server 2005 Express Edition, Microsoft SQL Server 2005 Workgroup Edition

  • kbprb kbusage KB168001
피드백
> var varClickTracking = 1; var varCustomerTracking = 1; var Route = "76500"; var Ctrl = ""; document.write("