sys.fn_my_permissions (T-SQL)

Berlaku untuk:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse Analytics AnalyticsPlatform System (PDW)Titik akhir analitik SQL di Microsoft FabricWarehouse di Microsoft Fabric

Mengembalikan daftar izin yang secara efektif diberikan kepada prinsipal pada yang dapat diamankan. Fungsi terkait HAS_PERMS_BY_NAME.

Konvensi sintaks transact-SQL

Sintaks

fn_my_permissions ( securable , 'securable_class' )

Argumen

Securable

Nama yang dapat diamankan. Jika yang dapat diamankan adalah server atau database, nilai ini harus diatur ke NULL. securable adalah ekspresi skalar dari jenis sysname. dapat diamankan dapat menjadi nama multibagian.

'securable_class'

Nama kelas yang dapat diamankan yang izinnya tercantum. securable_class adalah sysname, dengan default NULL.

Argumen ini harus merupakan salah satu nilai berikut: APPLICATION ROLE, , , ASYMMETRIC KEYDATABASECERTIFICATEASSEMBLYCONTRACT, ENDPOINTMESSAGE TYPELOGINFULLTEXT CATALOG, REMOTE SERVICE BINDINGSCHEMAROUTEROLEOBJECTSERVER, SERVICE, , SYMMETRIC KEY, TYPE, , USER, . XML SCHEMA COLLECTION Nilai NULL default ke SERVER.

Kolom yang dikembalikan

Tabel berikut mencantumkan kolom yang fn_my_permissions dikembalikan. Setiap baris yang dikembalikan menjelaskan izin yang dipegang oleh konteks keamanan saat ini pada yang dapat diamankan. Mengembalikan NULL jika kueri gagal.

Nama kolom Jenis Deskripsi
entity_name nama sysname Nama yang dapat diamankan tempat izin yang tercantum diberikan secara efektif.
subentity_name nama sysname Nama kolom jika yang dapat diamankan memiliki kolom, jika tidak NULL.
permission_name nvarchar Nama izin.

Keterangan

Fungsi bernilai tabel ini mengembalikan daftar izin efektif yang dipegang oleh prinsipal panggilan pada yang dapat diamankan tertentu. Izin yang efektif adalah salah satu opsi berikut:

  • Izin yang diberikan langsung kepada kepala sekolah, dan tidak ditolak.
  • Izin yang tersirat oleh izin tingkat yang lebih tinggi yang dipegang oleh prinsipal dan tidak ditolak.
  • Izin yang diberikan kepada peran atau grup yang utamanya adalah anggota, dan tidak ditolak.
  • Izin yang dipegang oleh peran atau grup yang utamanya adalah anggota, dan tidak ditolak.

Evaluasi izin selalu dilakukan dalam konteks keamanan pemanggil. Untuk menentukan apakah beberapa prinsipal lain memiliki izin yang efektif, pemanggil harus memiliki IMPERSONATE izin pada prinsipal tersebut.

Untuk entitas tingkat skema, nama non-null satu, dua, atau tiga bagian diterima. Untuk entitas tingkat database, nama satu bagian diterima, dengan nilai null yang berarti database saat ini. Untuk server itu sendiri, nilai null (artinya server saat ini) diperlukan. fn_my_permissions tidak dapat memeriksa izin pada server tertaut.

Kueri berikut mengembalikan daftar kelas bawaan yang dapat diamankan:

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

Jika DEFAULT disediakan sebagai nilai yang dapat diamankan atau securable_class, nilai ditafsirkan sebagai NULL.

Fungsi fn_my_permissions ini tidak didukung di kumpulan SQL khusus Azure Synapse Analytics.

Izin

Memerlukan keanggotaan dalam peran publik .

Contoh

J. Mencantumkan izin efektif pada server

Contoh berikut mengembalikan daftar izin efektif pemanggil di server.

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

B. Mencantumkan izin efektif pada database

Contoh berikut mengembalikan daftar izin efektif pemanggil pada AdventureWorks2022 database.

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

C. Mencantumkan izin efektif pada tampilan

Contoh berikut mengembalikan daftar izin efektif pemanggil pada vIndividualCustomer tampilan dalam Sales skema AdventureWorks2022 database.

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

D. Mencantumkan izin efektif pengguna lain

Contoh berikut mengembalikan daftar izin efektif pengguna Wanida database pada Employee tabel dalam HumanResources skema AdventureWorks2022 database. Pemanggil memerlukan IMPERSONATE izin pada pengguna Wanida.

EXECUTE AS USER = 'Wanida';

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

REVERT;
GO

E. Mencantumkan izin efektif pada sertifikat

Contoh berikut mengembalikan daftar izin efektif pemanggil pada sertifikat bernama Shipping47 dalam database saat ini.

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

F. Mencantumkan izin efektif pada Koleksi Skema XML

Contoh berikut mengembalikan daftar izin efektif pemanggil pada Koleksi Skema XML bernama ProductDescriptionSchemaCollection dalam AdventureWorks2022 database.

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

G. Mencantumkan izin efektif pada pengguna database

Contoh berikut mengembalikan daftar izin efektif pemanggil pada pengguna bernama MalikAr dalam database saat ini.

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

H. Mencantumkan izin efektif dari login lain

Contoh berikut mengembalikan daftar izin efektif login WanidaBenshoof SQL Server pada Employee tabel dalam HumanResources skema AdventureWorks2022 database. Pemanggil memerlukan IMPERSONATE izin pada login WanidaBenshoofSQL Server .

EXECUTE AS LOGIN = 'WanidaBenshoof';

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

REVERT;
GO