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

기술 자료 번역 기술 자료 번역
기술 자료: 168001 - 이 문서가 적용되는 제품 보기.
이 문서는 이전에 다음 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 뉴스 그룹에 참여하시기 바랍니다.

속성

기술 자료: 168001 - 마지막 검토: 2006년 4월 12일 수요일 - 수정: 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

피드백 보내기

 

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