MSSQL 복구시 계정에 관련된 내용
/*작성일자*/
- 2017.05.17
[내용]
- 신규 서버에 복구한 DB에서 계정 및 스키마 삭제시 복구된 DB 영향도
- 계정 및 스키마 삭제시 오류 발생
데이터베이스 보안 주체는 데이터베이스의 스키마를 소유하며 삭제할 수 없습니다.
오류 : 15138
오류 : 3729
[대상 시스템]
- MSSQL 2012
[내용 확인]
- 백업받은 디비를 신규 서버에 복원했을시에 로그인 계정과 복원된 DB계정의 SID가 맞지 않아 맵핑시켜줘야 하는 작업이 필요한데,
복원된 DB의 계정과 로그인 계정이 서로 mapping되어 있지 않고, 기존의 계정 및 스키마를 사용하지 않을거면 삭제를 진행해도
복원된 DB의 영향도는 없다.
- 계정 삭제시 오류가 발생(조치방법)
- 현재 해당 계정이 소유하고 있는 스키마를 확인한다.
USE AdventureWorks2012;
SELECT s.name
FROM sys.schemas s
WHERE s.principal_id = USER_ID('degitalIPk');
USE DB명;
SELECT s.name
FROM sys.schemas s
WHERE s.principal_id = USER_ID('계정이름');
- 확인된 스키마를 dbo로 변경한다.
ALTER AUTHORIZATION ON SCHEMA::db_datareader TO dbo;
ALTER AUTHORIZATION ON SCHEMA::db_datawriter TO dbo;
- 해당 계정을 삭제한다.
- 스키마 삭제시 오류 발생(조치 방법)
- ‘DF_DbookServiceInfo_PublishScope’ 이라는 객체가 현재 삭제하려는 스키마를 참조하고 있기 때문에 삭제가 되지 않고 오류가 발생
- 아래의 쿼리문을 통해 해당 스키마를 dbo로 이전
USE DB명
ALTER SCHEMA dbo TRANSFER degitalIPk.DF_DbookServiceInfo_PublishScope
ALTER SCHEMA dbo TRANSFER 스키마명.참조하고 있는 객체
- 해당 스키마 삭제