mssql '데이터베이스 보안 주체는 데이터베이스의 스키마을(를) 소유하며 삭제할 수 없습니다'
"데이터베이스 보안 주체는 데이터베이스의 스키마을(를) 소유하며 삭제할 수 없습니다."라는 에러는 MSSQL에서 사용자를 삭제하려고 할때 이 사용자가 스키마를 소유하고 있다면 삭제할 수 없다는 에러 메시지가 나온다.
위 그림처럼 SSMS에서 마우스 클릭을 통해 사용자를 삭제하려고 할때 경고 안내창이 나온다.
아래와 같이 Drop User isoltek; 라는 SQL을 실행하여 삭제하려고 하면 결과 메시지에 삭제할 수 없다는 내용이 나온다.
위 에러는 삭제할 사용자가 소유한 스키마를 dbo 로 이관 시키고 삭제하면 해결된다.
사용자가 소유한 스키마를 dbo로 이관 시키는 방법은 두가지가 있다.
가. 마우스 클릭을 통해 이관하는 방법
나. SQL 창에서 SQL을 실행하여 이관하는 방법
이해할 있도록 이 과정을 모두 캡쳐해서 붙인다.
(아래 붙인 그림들은 클릭하면 모두 원본으로 볼 수 있다. 만약 글씨가 작아 크게 보고자 할경우 그림을 클릭하면 된다.)
여기까지가 마우스를 사용한 과정이다.
이것을 SQL 창에서 실행하면 아래와 같은 명령어를 사용하면 위 그림과 같은 결과를 갖는다.
Select * From [sys].[schemas]
Where [principal_id]=USER_ID('isoltek');
Alter Authorization On Schema::isoltek To dbo;
이렇게 두줄이면 되는 것을 마우스로 하려면 10개 정도의 과정을 수행해야 한다.
사람마다 어떤 것이 편할지는 모른다. 각자 취향이 있으므로 자신에게 편한 방법으로 수행하면 된다.
이렇게 하고난 후 삭제를 하면 "데이터베이스 보안 주체는 데이터베이스의 스키마을(를) 소유하며 삭제할 수 없습니다."라는 에러 없이 삭제할 수 있다.
참고 : https://m.blog.naver.com/reinstate10/220588912597
'DB Skill > MSSQL' 카테고리의 다른 글
mssql license upgrade standard to enterprise ( SQL Server 에디션 업그레이드 ) (0) | 2021.09.06 |
---|---|
mssql table delete시 세션 정보 저장 트리거 (0) | 2021.08.20 |
mssql 형변환 잘못된 쿼리 확인 (0) | 2021.08.19 |
mssql vlf count 확인 및 축소 (0) | 2021.08.19 |
mssql waitresource 기반 page정보로 table 및 index 확인 (0) | 2021.08.19 |