다음을 통해 공유


DENY 시스템 개체 권한(Transact-SQL)

적용 대상: Microsoft Fabric의 SQL ServerAzure SQL Database Azure SQL Managed InstanceSQL 데이터베이스

저장 프로시저, 확장 저장 프로시저, 함수 및 뷰와 같은 시스템 개체에 대한 권한을 거부합니다.

Transact-SQL 구문 표기 규칙

구문

DENY { SELECT | EXECUTE } ON [ sys. ] system_object TO principal

인수

[ sys. ]

sys 한정자는 카탈로그 뷰 및 동적 관리 뷰를 참조하는 경우에만 필요합니다.

system_object

사용 권한을 거부할 개체를 지정합니다.

원금

사용 권한을 취소할 보안 주체를 지정합니다.

설명

이 문은 SQL Server에서 설치한 특정 저장 프로시저, 확장 저장 프로시저, 테이블 반환 함수, 스칼라 함수, 뷰, 카탈로그 뷰, 호환성 뷰, 뷰, INFORMATION_SCHEMA 동적 관리 뷰 및 시스템 테이블에 대한 사용 권한을 거부하는 데 사용할 수 있습니다. 이러한 각 시스템 개체는 리소스 데이터베이스(mssqlsystemresource)에 고유한 레코드로 존재합니다. 리소스 데이터베이스는 읽기 전용입니다. 개체에 대한 링크는 모든 데이터베이스의 스키마에 sys 레코드로 노출됩니다.

기본 이름 확인은 정규화되지 않은 프로시저 이름을 리소스 데이터베이스로 확인합니다. 따라서 sys 카탈로그 뷰 및 동적 관리 뷰를 지정하는 경우에만 한정자가 필요합니다.

주의

시스템 개체에 대한 사용 권한을 거부하면 해당 개체에 의존하는 애플리케이션이 실패합니다. 카탈로그 뷰에 대한 기본 권한을 변경하는 경우 SQL Server Management Studio는 카탈로그 뷰를 사용하며 예상대로 작동하지 않을 수 있습니다.

트리거 및 시스템 개체 열에 대한 사용 권한 거부는 지원되지 않습니다.

시스템 개체에 대한 사용 권한은 SQL Server 업그레이드 중에 유지됩니다.

시스템 개체는 sys.system_objects 카탈로그 뷰에 표시됩니다. 시스템 개체에 대한 사용 권한은 데이터베이스의 sys.database_permissions 카탈로그 뷰에 master 표시됩니다.

다음 쿼리는 시스템 개체의 사용 권한에 대한 정보를 반환합니다.

SELECT *
FROM master.sys.database_permissions AS dp
     INNER JOIN sys.system_objects AS so
         ON dp.major_id = so.object_id
WHERE dp.class = 1
      AND so.parent_object_id = 0;
GO

사용 권한

CONTROL SERVER 권한이 필요합니다.

다음 예제에서는 EXECUTE에 대한 xp_cmdshell 사용 권한을 거부합니다.

DENY EXECUTE ON sys.xp_cmdshell TO PUBLIC;
GO