sys.fn_my_permissions(Transact-SQL)

보안 개체에 대해 보안 주체에 부여된 유효 사용 권한 목록을 반환합니다. 연관된 함수는 HAS_PERMS_BY_NAME입니다.

항목 링크 아이콘Transact-SQL 구문 표기 규칙

구문

fn_my_permissions (securable,'securable_class')

인수

  • securable
    보안 개체의 이름입니다. 보안 개체가 서버 또는 데이터베이스인 경우 이 값은 NULL로 설정해야 합니다. securable은 sysname 형식의 스칼라 식입니다. securable은 다중 부분 이름일 수 있습니다.

  • 'securable_class'
    권한을 나열할 보안 개체의 클래스 이름입니다. securable_class는 sysname입니다. securable_class는 다음 중 하나여야 합니다. APPLICATION ROLE, ASSEMBLY, ASYMMETRIC KEY, CERTIFICATE, CONTRACT, DATABASE, ENDPOINT, FULLTEXT CATALOG, LOGIN, MESSAGE TYPE, OBJECT, REMOTE SERVICE BINDING, ROLE, ROUTE, SCHEMA, SERVER, SERVICE, SYMMETRIC KEY, TYPE, USER, XML SCHEMA COLLECTION 중 하나여야 합니다.

반환되는 열

다음 표에서는 fn_my_permissions에서 반환하는 열을 나열합니다. 반환되는 각 행은 해당 보안 개체에 대해 현재 보안 컨텍스트가 가지는 사용 권한을 설명합니다. 쿼리가 실패하는 경우 NULL을 반환합니다.

열 이름

형식

설명

entity_name

sysname

나열된 사용 권한이 유효하게 부여되는 보안 개체의 이름입니다.

subentity_name

sysname

보안 개체가 열인 경우 열 이름이며 그렇지 않은 경우에는 NULL입니다.

permission_name

nvarchar

사용 권한의 이름입니다.

주의

이 테이블 반환 함수는 지정된 보안 개체에 대해 해당 보안 주체가 가진 유효 사용 권한의 목록을 반환합니다. 유효 사용 권한은 다음 중 하나입니다.

  • 보안 주체에게 직접 부여되고 거부되지 않은 사용 권한

  • 보안 주체가 소유하는 더 높은 수준의 사용 권한에 포함되고 거부되지 않은 사용 권한

  • 보안 주체가 멤버로 속한 역할이나 그룹에 부여되고 거부되지 않은 사용 권한

  • 보안 주체가 멤버로 속한 역할이나 그룹이 소유하고 거부되지 않은 사용 권한

사용 권한은 항상 호출자의 보안 컨텍스트에서 평가됩니다. 다른 보안 주체에게 유효 사용 권한이 있는지 여부를 확인하려면 호출자에게 해당 보안 주체에 대한 IMPERSONATE 권한이 있어야 합니다.

스키마 수준 엔터티의 경우 한 부분, 두 부분 또는 세 부분으로 된 Null이 아닌 이름을 사용할 수 있습니다. 데이터베이스 수준 엔터티의 경우 한 부분으로 된 이름을 사용할 수 있으며 Null 값은 "현재 데이터베이스"를 나타냅니다. 서버 자체인 경우 "현재 서버"를 뜻하는 null 값이 필요합니다. fn_my_permissions로는 연결된 서버의 사용 권한을 확인할 수 없습니다.

다음 쿼리는 기본 제공 보안 개체 클래스의 목록을 반환합니다.

SELECT DISTINCT class_desc FROM fn_builtin_permissions(default)
    ORDER BY class_desc;
GO

securable 또는 securable_class의 값이 DEFAULT인 경우 이 값은 NULL로 해석됩니다.

1. 서버에 대한 유효 사용 권한 나열

다음 예에서는 서버에 대한 호출자의 유효 사용 권한 목록을 반환합니다.

SELECT * FROM fn_my_permissions(NULL, 'SERVER');
GO

2. 데이터베이스에 대한 유효 사용 권한 나열

다음 예에서는 AdventureWorks2008R2 데이터베이스에 대한 호출자의 유효 사용 권한 목록을 반환합니다.

USE AdventureWorks2008R2;
SELECT * FROM fn_my_permissions (NULL, 'DATABASE');
GO

3. 뷰에 대한 유효 사용 권한 나열

다음 예에서는 AdventureWorks2008R2 데이터베이스의 Sales 스키마에 있는 vIndividualCustomer 뷰에 대한 호출자의 유효 사용 권한 목록을 반환합니다.

USE AdventureWorks2008R2;
SELECT * FROM fn_my_permissions('Sales.vIndividualCustomer', 'OBJECT') 
    ORDER BY subentity_name, permission_name ; 
GO 

4. 다른 사용자의 유효 사용 권한 나열

다음 예에서는 AdventureWorks2008R2 데이터베이스의 HumanResources 스키마에 있는 Employee 테이블에 대한 데이터베이스 사용자 Wanida의 유효 사용 권한 목록을 반환합니다. 호출자는 사용자 Wanida에 대한 IMPERSONATE 사용 권한이 필요합니다.

EXECUTE AS USER = 'Wanida';
SELECT * FROM fn_my_permissions('HumanResources.Employee', 'OBJECT') 
    ORDER BY subentity_name, permission_name ;  
REVERT;
GO

5. 인증서에 대한 유효 사용 권한 나열

다음 예에서는 현재 데이터베이스에서 이름이 Shipping47인 인증서에 대한 호출자의 유효 사용 권한 목록을 반환합니다.

SELECT * FROM fn_my_permissions('Shipping47', 'CERTIFICATE');
GO

6. XML 스키마 컬렉션에 대한 유효 사용 권한 나열

다음 예에서는 AdventureWorks2008R2 데이터베이스에서 이름이 ProductDescriptionSchemaCollection인 XML 스키마 컬렉션에 대한 호출자의 유효 사용 권한 목록을 반환합니다.

USE AdventureWorks2008R2;
SELECT * FROM fn_my_permissions('ProductDescriptionSchemaCollection',
    'XML SCHEMA COLLECTION');
GO

7. 데이터베이스 사용자에 대한 유효 사용 권한 나열

다음 예에서는 현재 데이터베이스에서 이름이 MalikAr인 사용자에 대한 호출자의 유효 사용 권한 목록을 반환합니다.

SELECT * FROM fn_my_permissions('MalikAr', 'USER');
GO

8. 다른 로그인의 유효 사용 권한 나열

다음 예에서는 AdventureWorks2008R2 데이터베이스의 HumanResources 스키마에 있는 Employee 테이블에 대한 SQL Server 로그인 WanidaBenshoof의 유효 사용 권한 목록을 반환합니다. 호출자는 SQL Server 로그인 WanidaBenshoof에 대한 IMPERSONATE 사용 권한이 필요합니다.

EXECUTE AS LOGIN = 'WanidaBenshoof';
SELECT * FROM fn_my_permissions('AdventureWorks2008R2.HumanResources.Employee', 'OBJECT') 
    ORDER BY subentity_name, permission_name ;  
REVERT;
GO