데이터베이스 보안 주체가 데이터베이스에서 스키마를 소유하며 메시지를 삭제할 수 없습니다


28

데이터베이스에서 보안 주체를 삭제하려고 시도했지만 스키마를 소유하고 있기 때문에 할 수 없습니다. 그러나 사용자를 편집 할 때 스키마 선택을 취소하는 상자는 파란색이며 제거 할 수 없습니다. 이 스키마에서 프린시 펄을 제거하려면 어떻게해야합니까?

답변:


31

이렇게하려면 T-SQL을 시도하십시오.

alter authorization
on schema::YourSchemaName
to dbo
go

drop user TheUserYouWantToDelete
go

스키마 소유자 인 주체를 삭제할 수 없으므로 ALTER AUTHORZATION소유 한 스키마를 변경 YourSchemaName했지만 dbo( 데이터베이스에서 소유 한 스키마로 분명히 대체했습니다.) 소유권을 필요한 주체로 변경할 수 있습니다. 환경). 그러면 이전에 스키마를 소유 한 사용자를 삭제할 수 있습니다 (예 : 내가 사용한 목적 TheUserYouWantToDelete이지만 삭제하려는 소유자가 아닌 사람 임).


좋아, 그래서 작동했습니다. 그러나 왜 그런지 조금 혼란 스럽습니다. 스키마를 다른 스키마에 인증해야하는 이유는 무엇입니까? 아마도 스키마를 검토해야 할 수도 있습니다.
rsteckly

1
@rsteckly 단순화, 권한 부여 = 소유권. 스키마를 소유 한 사용자를 삭제할 수 있으면 소유자가 더 이상 존재하지 않기 때문에 스키마가 유효하지 않습니다. 주문한 고객을 삭제할 수 있다고 상상해보십시오. 주문 테이블에서 CustomerID는 더 이상 고객이없는 경우 무엇을 의미합니까? 주문은 어디로 배송해야합니까?
Aaron Bertrand

죄송합니다, 내 예는 잘 설명되지 않았습니다. 우리는 dbo스키마 에 대한 권한을 변경하지 않고 dbo교장 에 대한 권한을 변경합니다 . 그것은 모든 데이터베이스 주체가 될 수 있습니다.
토마스 스트링거

30

T-SQL 방식으로 작동합니다. http://zarez.net/?p=179 덕분에 SSMS 가이를 수행하는 방법을 찾았습니다 (UI).

Sql Server Management Studio에서 스키마 소유자를 변경하려면

Expand your database -> Security -> Schemas

개체 탐색기 정보에서 스키마 및 소유자 목록을 볼 수 있습니다.

여기에 이미지 설명을 입력하십시오

사용자가 소유 한 스키마를 모르는 경우 사용자의 속성을 확인하십시오.

여기에 이미지 설명을 입력하십시오

사용자가 소유 한 스키마의 특성을 열고 "검색"을 클릭하여 새 소유자를 찾으십시오. 새로운 소유자를 모르면 "찾아보기"를 할 수 있습니다.

Properites -> Search -> Browse

스키마 소유자를 dbo (또는 가장 적합한 사람)로 변경할 수 있습니다.

여기에 이미지 설명을 입력하십시오


1
T-SQL 방식이 훨씬 우수하고 유연합니다. GUI를 통해 그것을하는 것은 항상 고통입니다!
Kin Shah

나는 스크립트에서 사용할 수 있기 때문에 T-SQL 방식을 좋아합니다.
woodvi

2
참고 : F7은 세부 정보가 표시되지 않는 경우 세부 정보를 표시하는 바로 가기입니다.
Simon_Weaver
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.