sys.fn_my_permissions (T-SQL)
Berlaku untuk: Titik akhir analitik SQL Server Azure SQL Database Azure SQL Managed Instance Azure Synapse Analytics Platform System (PDW) SQL di Microsoft Fabric Warehouse di Microsoft Fabric
Mengembalikan daftar izin yang secara efektif diberikan kepada prinsipal pada yang dapat diamankan. Fungsi terkait HAS_PERMS_BY_NAME.
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 KEY
DATABASE
CERTIFICATE
ASSEMBLY
CONTRACT
, ENDPOINT
MESSAGE TYPE
LOGIN
FULLTEXT CATALOG
, REMOTE SERVICE BINDING
SCHEMA
ROUTE
ROLE
OBJECT
SERVER
, 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 | Tipe | 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 WanidaBenshoof
SQL Server .
EXECUTE AS LOGIN = 'WanidaBenshoof';
SELECT *
FROM fn_my_permissions('AdventureWorks2022.HumanResources.Employee', 'OBJECT')
ORDER BY subentity_name, permission_name;
REVERT;
GO