다음을 통해 공유


sys.fn_my_permissions(Transact-SQL)

적용 대상: SQL Server Azure SQL Database Azure SQL Managed Instance Azure Synapse Analytics Analytics Platform System(PDW) Microsoft Fabric의 SQL 분석 엔드포인트 Microsoft Fabric의 웨어하우스

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

Transact-SQL 구문 표기 규칙

구문

fn_my_permissions ( securable , 'securable_class' )

인수

securable

보안 개체의 이름입니다. 보안 개체가 서버 또는 데이터베이스인 경우 이 값을 으로 NULL설정해야 합니다. securablesysname 형식의 스칼라 식입니다. 보안 개체 는 다중 파트 이름일 수 있습니다.

'securable_class'

사용 권한이 나열되는 보안 개체 클래스의 이름입니다. securable_class sysname이며 기본값은 .입니다NULL.

이 인수는 다음 값 APPLICATION ROLE중 하나여야 합니다. , , ASSEMBLY, ASYMMETRIC KEY, CONTRACTCERTIFICATE, DATABASEFULLTEXT CATALOGENDPOINT, LOGINMESSAGE TYPE, OBJECT, REMOTE SERVICE BINDINGROLE, SCHEMAROUTE, SERVER, SERVICESYMMETRIC KEY, TYPE, USER, . XML SCHEMA COLLECTION 기본값은 NULL .입니다 SERVER.

반환된 열

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

열 이름 Type 설명
entity_name sysname 나열된 권한이 효과적으로 부여되는 보안 개체의 이름입니다.
subentity_name sysname 보안 개체에 열이 있으면 열 이름이고, 그렇지 않으면 NULL열 이름입니다.
permission_name nvarchar 사용 권한의 이름입니다.

설명

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

  • 보안 주체에게 직접 부여되고 거부되지 않은 사용 권한
  • 보안 주체가 소유하는 더 높은 수준의 사용 권한에 포함되고 거부되지 않은 사용 권한
  • 보안 주체가 멤버로 속한 역할이나 그룹에 부여되고 거부되지 않은 사용 권한
  • 보안 주체가 멤버로 속한 역할이나 그룹이 소유하고 거부되지 않은 사용 권한

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

스키마 수준 엔터티의 경우 null이 아닌 1부, 2부 또는 3부로 구성된 이름이 허용됩니다. 데이터베이스 수준 엔터티의 경우 현재 데이터베이스를 의미하는 null 값을 사용하여 한 부분으로 된 이름이 허용됩니다. 서버 자체의 경우 null 값(현재 서버 의미)이 필요합니다. fn_my_permissions 연결된 서버에 대한 사용 권한을 확인할 수 없습니다.

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

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

보안 개체 또는 securable_class 값으로 제공된 경우 DEFAULT 값은 .로 NULL해석됩니다.

이 함수는 fn_my_permissions Azure Synapse Analytics 전용 SQL 풀에서 지원되지 않습니다.

사용 권한

public 역할의 멤버 자격이 필요합니다.

예제

A. 서버에 대한 유효 권한 나열

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

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

B. 데이터베이스에 대한 유효 권한 나열

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

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

C. 보기에 대한 유효 사용 권한 나열

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

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

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

다음 예제에서는 데이터베이스 스키마 AdventureWorks2022 의 테이블에 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

E. 인증서에 대한 유효 권한 나열

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

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

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

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

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

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

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

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

H. 다른 로그인의 유효 권한 나열

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

EXECUTE AS LOGIN = 'WanidaBenshoof';

SELECT *
FROM fn_my_permissions('AdventureWorks2022.HumanResources.Employee', 'OBJECT')
ORDER BY subentity_name, permission_name;

REVERT;
GO