조띵의지극히개인적인공간

MSSQL

Major/Computer 2004.10.08 11:56
BUG: DBO 사용자가 엔터프라이즈 관리자에 표시되지 않는다
적용 대상
BUG #: 355065(SHILOH_BUGS)
현상
사용자 데이터베이스에 있는 데이터베이스 소유자(dbo) 사용자가 엔터프라이즈 관리자의 사용자 폴더에 나열되지 않습니다. 또한 엔터프라이즈 관리자에서 로그인 폴더의 로그인 등록 정보를 보면 아래와 같은 오류 메시지가 나타날 수 있습니다.

오류 21776: [SQL-DMO] 'dbo' 이름을 사용자 컬렉션에서 찾을 수 없습니다. 정식 이름인 경우 []를 사용하여 이름의 각 부분을 분리한 뒤 다시 시도하십시오.
이 문제는 SQL Server 2000 서비스 팩 1(SP1)을 서버에 적용한 경우에만 발생합니다. 서비스 팩 1 이전에는 dbo 사용자가 빈 로그인 이름으로 표시됩니다.
원인
엔터프라이즈 관리자는 일치하는 로그인이 없는 모든 사용자를 올바르게 필터링하지 못하며 dbo 사용자는 일치하는 로그인을 갖고 있지 않습니다. 이 동작이 발생하는 두 가지 가능한 원인은 아래와 같습니다.
그룹 구성원(예: BUILTIN\Administrators)을 통해 SQL Server를 실행하는 컴퓨터에 액세스 권한이 있는 Microsoft Windows NT 인증 로그인에 의해 데이터베이스가 만들어졌을 때 해당 데이터베이스의 sysusers 시스템 테이블에 저장된 보안 ID(SID)가 syslogins 시스템 테이블에 일치하는 SID를 갖고 있지 않은 경우


sysusers 시스템 테이블의 dbo 사용자 SID가 syslogins 시스템 테이블의 SID와 일치하지 않는 위치에서 데이터베이스가 복원된 경우
해결 과정
이 문제를 해결하려면 다음 방법 중 하나를 사용하십시오.
dbo 사용자가 명시적 로그인을 갖고 있지 않으면 데이터베이스 소유자를 명시적 로그인을 갖고 있는 사용자로 변경합니다. 예를 들어, 데이터베이스 소유자를 시스템 관리자(sa)로 변경한 다음 아래의 코드를 실행합니다.
exec sp_changedbowner 'sa'
dbo 사용자가 명시적 로그인을 갖고 있지만 sysusers 시스템 테이블에 있는 해당 사용자의 SID가 데이터베이스 복원으로 인해 syslogins 시스템 테이블의 로그인 SID와 일치하지 않는 경우 sp_change_users_login 저장 프로시저를 사용하여 SID 매핑을 복원합니다.
현재 상태
Microsoft는 SQL Server 2000 서비스 팩 1(SP1)에서 이 문제를 확인했습니다.
추가 정보
dbo 사용자가 사용자 데이터베이스에서 일치하지 않는지 확인하려면 다음 쿼리를 실행하십시오.
Use GO SELECT u.name AS "Name", ISNULL(l.name, 'dbo is unmatched') AS "Matched Login" FROM sysusers u LEFT JOIN master.dbo.syslogins l ON u.sid = l.sid WHERE u.name = 'dbo' GO
참조
자세한 내용은 Microsoft 기술 자료의 다음 문서를 참조하십시오.
218172 PRB: Cannot Change SA Password in Enterprise Manager

274188 PRB: "Troubleshooting Orphaned Users" Topic in Books Online is Incomplete

168001 PRB: 덤프 복원 후 사용자 로그온 및/또는 권한 오류

246133 INF: SQL Server 7.0 및 SQL Server 2000 사이에 로그인 및 암호 전송

298758 PRB: Using the Auto_Fix Option with sp_change_users_login Can Leave Security Vulnerabilities

본 문서의 정보는 다음의 제품에 적용됩니다.
Microsoft SQL Server 2000(모든 버전)
최종수정일: 2003-11-11 (3.0)
키워드: kbbug kbpending kbSQLServ2000bug KB305711
Posted by 조띵


티스토리 툴바