적용 대상: Microsoft Fabric의 SQL Server
Azure SQL Database
Azure SQL Managed Instance
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