2011-02-07 4 views
5

데이터베이스에 DBUsers가 많이 있습니다. 우리는 데이터베이스에서 모든 사용자를 정리해야합니다. 제가 DB에서 사용자를 삭제하려고 할 때 다음 오류 때문에 실패데이터베이스 사용자가 스키마를 소유하고 있는지 확인하기위한 일반화 된 쿼리

메시지 15138, 수준 16, 상태 1, 줄 2 데이터베이스 보안 주체는 데이터베이스의 스키마 를 소유 및 될 수 없습니다 떨어졌다.

그래서 해결책을 찾았습니다. 즉 스키마의 소유권을 dbo으로 변경했습니다. 이제 아래 스크립트를 사용하여 사용자를 삭제할 수 있습니다.

SELECT name FROM sys.schemas WHERE principal_id = USER_ID('myUser') 
ALTER AUTHORIZATION ON SCHEMA::SchemaName TO dbo 
GO 
DROP USER myUser 

그러나 일반 사용자 정의 스크립트를 생성해야하므로 여러 사용자를 삭제하려고합니다. 나는이 그들을 소유 한 사용자에 대해 당신에게 스키마의 전체 목록을 줄 것이다 SQL 서버 2008

+1

당신은 당신이 사용중인 데이터베이스를 지정해야합니다. –

답변

7

을 사용하고 있습니다 :

SELECT db.name AS [DB User], s.name AS [Schema] 
FROM sys.database_principals db 
JOIN sys.schemas s ON s.principal_id = db.principal_id 
관련 문제