15138: The database principal owns a schema in the database, and cannot be dropped (database principal이 스키마를 소유하고 있어 삭제 불가)
SQL Server의미
데이터베이스 사용자/역할(database principal)을 삭제하려 했지만, 해당 principal이 데이터베이스의 스키마를 하나 이상 소유하고 있어 삭제할 수 없었다. 소유한 스키마를 다른 principal에게 이전하기 전까지 삭제할 수 없다.
원인
제거하려는 사용자가 하나 이상의 스키마의 OWNER다(예: 기본적으로 자신의 이름으로 생성된 스키마, 또는 AUTHORIZATION으로 지정된 스키마). SQL Server는 소유자 없는 스키마가 남지 않도록 삭제를 막는다.
해결 방법
사용자가 소유한 스키마를 찾는다: SELECT name FROM sys.schemas WHERE principal_id = USER_ID('app_user'); 이 스키마들의 소유권을 다른 principal(예: dbo)에게 이전한다: ALTER AUTHORIZATION ON SCHEMA::[app_schema] TO dbo; 스키마가 더 이상 필요 없고 비어 있다면 DROP SCHEMA. 소유권 이전 후 DROP USER를 다시 실행한다.
같은 데이터베이스의 다른 항목
- 8651Could not perform the operation because the requested memory grant was not available (요청한 memory grant를 사용할 수 없어 작업을 수행할 수 없음)
- 5061ALTER DATABASE failed because a lock could not be placed on database (데이터베이스에 락을 걸 수 없어 ALTER DATABASE 실패)
- 3702Cannot drop database because it is currently in use (사용 중이어서 데이터베이스 삭제 불가)
- 1934INSERT/UPDATE failed because the following SET options have incorrect settings (다음 SET 옵션의 설정이 잘못되어 INSERT/UPDATE 실패)
- 468Cannot resolve the collation conflict
- 4864Bulk load data conversion error (type mismatch or invalid character) (대량 로드 데이터 변환 오류)
- 916The server principal is not able to access the database under the current security context (서버 보안 주체가 현재 보안 컨텍스트에서 데이터베이스에 접근할 수 없음)