데이터베이스에서 사용자 삭제 오류

 

  • Version : SQL Server

 

SQL Server에서 사용자를 삭제할때 삭제하려는 사용자 계정이 특정 개체를 소유하거나 사용 권한을 가지고 있을때 다음과 같은 오류메시지와 함께 작업이 실패한다.

Msg 15136, Level 16, State 1, Line 2

The database principal is set as the execution context of one or more procedures, functions, or event notifications and cannot be dropped.

 

이런 경우 특정 사용자 계정이 어떤 개체를 소유하거나 권한을 가지고 있는지 확인하여 해당 권한을 삭제한 후 계정을 삭제해야 한다.

 

SQL Server에는 다양한 시스템 뷰가 있으며execute_as_principal_id 컬럼은 EXECITE AS 데이터베이스 보안주체 ID를 나타낸다. 아래 스크립트는 시스템뷰에서 execute_as_principal_id를 사용하는 모든 뷰의 목록을 확인할 수 있다.

select object_name(object_id) 'view name' from sys.system_views

where object_definition (object_id) like '%execute_as_principal_id%'

 

 

위의 뷰 목록을 기반으로 아래 스크립트를 실행하여 특정 계정이 사용하는 뷰 목록을 확인할 수 있다.

select user_name(execute_as_principal_id) 'execute as user', * from sys.system_sql_modules where execute_as_principal_id isnot null

select user_name(execute_as_principal_id) 'execute as user', * from sys.service_queues where execute_as_principal_id is notnull

select user_name(execute_as_principal_id) 'execute as user', * from sys.assembly_modules where execute_as_principal_id is notnull

select user_name(execute_as_principal_id) 'execute as user', * from sys.sql_modules where execute_as_principal_id is not null

select user_name(execute_as_principal_id) 'execute as user', * from sys.server_assembly_modules where execute_as_principal_id is not null

select user_name(execute_as_principal_id) 'execute as user', * from sys.server_sql_modules where execute_as_principal_id isnot null

select user_name(execute_as_principal_id) 'execute as user', * from sys.all_sql_modules where execute_as_principal_id is notnull

 

 

 

[참고자료]

https://blogs.msdn.microsoft.com/psssql/2016/11/15/unable-to-drop-a-user-in-a-database/

https://msdn.microsoft.com/ko-kr/library/ms174365.aspx

 


 

SQL Server, MS SQL, 사용자 삭제, 시스템 뷰, principal, execute_as_principal_id, SQL Tip, DBA, 카탈로그 뷰



강성욱 / jevida@naver.com

Microsoft SQL Server MVP

Blog : http://sqlmvp.kr

Facebook : http://facebook.com/sqlmvp

No. Subject Author Date Views
Notice SQL강좌: 챗GPT와 함께 배우는 SQL Server 무료 강좌 목차와 소개 (2023년 9월 업데이트) 코난(김대우) 2023.08.18 36472
Notice Python 무료 강좌 - 기초, 중급, 머신러닝(2023년 6월 업데이트) 코난(김대우) 2021.01.01 19445
2094 SQL Linux에서 기본 백업 디렉토리 변경 jevida(강성욱) 2017.09.13 3937
2093 Linux에서 DISK I/O 사용량 확인 jevida(강성욱) 2017.09.13 3918
2092 Linux에서 CPU 사용량 확인 jevida(강성욱) 2017.09.13 2305
2091 SQL Linux에서 SQL Server 시작, 중지, 활성, 비활성 jevida(강성욱) 2017.09.13 1537
2090 SQL Server DBA 체크리스트 jevida(강성욱) 2017.05.31 8277
2089 SQL Server 데이터베이스 백업이 성공적인지 확인하는 방법 jevida(강성욱) 2017.05.31 3809
2088 트리거가 적용된 메모리 최적화 테이블에서 alter table 실패 jevida(강성욱) 2017.05.31 3387
2087 메모리 최적화 테이블 변수 및 예상 행수 jevida(강성욱) 2017.05.31 3030
2086 백업 파일 복원과 3241 오류 (Microsoft® SQL Server® Backup to Microsoft Azure®Tool 사용) jevida(강성욱) 2017.05.31 3261
2085 In-Memory OLTP를 사용할 때 체크포인트 파일이 너무 많아 지는 이유 jevida(강성욱) 2017.05.31 2738
2084 메모리 최적화 테이블변수와 701 오류 (loop 사용으로 인한 메모리 부족 오류) jevida(강성욱) 2017.05.31 3453
2083 메모리 최적화 테이블에서 해시 인덱스 사용시 버킷 카운트의 중요성 jevida(강성욱) 2017.05.31 3103
2082 인덱스 리빌드시 병렬로 실행계획이 생성되지 않는 이유 jevida(강성욱) 2017.03.13 5067
2081 SQL Server 833오류 (15 Sec Slow IO Detected) jevida(강성욱) 2017.03.13 4517
2080 SQL Server nonpreemptive 모드에서Long Sync IO 오류 jevida(강성욱) 2017.03.13 3318
2079 SQL Server DTC Transaction의 SPID = -2 반환 jevida(강성욱) 2017.03.13 2460
2078 SQL Server Read/Writer 동기화 작동 원리 jevida(강성욱) 2017.03.13 2819
2077 SQL Server가 논리 및 물리 프로세서를 결정하는 방법 jevida(강성욱) 2017.03.13 2955
» 데이터베이스에서 사용자 삭제 오류 jevida(강성욱) 2017.03.13 2931
2075 SQL Server ODBC Driver 및 Command package Tool 설치 jevida(강성욱) 2017.01.11 4857





XE Login