Aracılığıyla paylaş


sys.fn_my_permissions (Transact-SQL)

Şunlar için geçerlidir:SQL ServerAzure SQL VeritabanıAzure SQL Yönetilen ÖrneğiAzure Synapse AnalyticsAnalytics Platform Sistemi (PDW)Microsoft FabricWarehouse'da SQL analiz uç noktası

Bir temenkul bir sistemde ana kişiye fiilen verilen izinlerin listesini döndürür. İlgili bir fonksiyon HAS_PERMS_BY_NAME.

Transact-SQL söz dizimi kuralları

Sözdizimi

fn_my_permissions ( securable , 'securable_class' )

Arguments

securable

Güvenlikli adı. Eğer güvenlikli sunucu veya veritabanı ise, bu değer olarak ayarlanmalıdır NULL. Securable , sysname tipinin skaler bir ifadesidir. Securable çok parçalı bir isim olabilir.

'securable_class'

İzinlerin listelendiği güvenlikli sınıfın adı. securable_classsysname'dir, varsayılan NULLolarak .

Bu argüman aşağıdaki değerlerden biri olmalıdır: APPLICATION ROLE, ASSEMBLY, SERVICEASYMMETRIC KEYCERTIFICATECONTRACTOBJECTMESSAGE TYPEREMOTE SERVICE BINDINGLOGINROLEFULLTEXT CATALOGROUTESCHEMAENDPOINTDATABASESYMMETRIC KEYTYPESERVERUSER, . XML SCHEMA COLLECTION Varsayılan değer NULL olarak .SERVER

Döndürülen sütunlar

Aşağıdaki tabloda, döndüren fn_my_permissions sütunlar listelenir. Geri dönen her satır, mevcut güvenlik bağlamında tutulan bir izni tanımlar. Sorgu başarısız olursa geri NULL döner.

Sütun adı Türü Description
entity_name sysname Listelenen izinlerin fiilen verildiği güvenlikli adı.
subentity_name sysname Eğer güvenlikli cihazda sütunlar varsa, sütun adı varsa, aksi takdirde NULL.
permission_name nvarchar İznin adı.

Açıklamalar

Bu tablo değerli fonksiyon, belirli bir güvenlikli durumda çağıran ana yöneticinin sahip olduğu etkin yetkilerin listesini döndürür. Etkili bir izin aşağıdaki seçeneklerden herhangi birinden biridir:

  • Doğrudan müdüre verilen bir izin, reddedilmez.
  • Müdür tarafından tutulan ve reddedilmeyecek daha yüksek seviyeli bir izinle ima edilen bir izin.
  • Başkanın üyesi olduğu bir rol veya gruba verilen ve reddedilmemiş bir izin.
  • Müdürün üyesi olduğu bir rol veya grup tarafından alınan ve reddedilmemiş bir izin.

İzin değerlendirmesi her zaman arayanın güvenlik bağlamında yapılır. Başka bir müdürün geçerli izni olup olmadığını belirlemek için, arayan kişinin o yönetici üzerinde izin alması IMPERSONATE gerekir.

Şema düzeyindeki varlıklar için bir, iki veya üç parçalı boş olmayan isimler kabul edilir. Veritabanı düzeyindeki varlıklar için, tek parçalı bir ad kabul edilir ve null değer mevcut veritabanı anlamına gelir. Sunucunun kendisi için bir null değer (yani mevcut sunucu) gereklidir. fn_my_permissions Bağlı bir sunucuda izinleri kontrol edemiyorum.

Aşağıdaki sorgu, yerleşik güvenli sınıfların listesini döndürür:

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

Eğer DEFAULTgüvenlikli veya securable_class değeri olarak sağlanırsa, değer şu şekilde yorumlanır.NULL

Bu fn_my_permissions fonksiyon Azure Synapse Analytics'in özel SQL havuzlarında desteklenmiyor.

Permissions

"" genel "" rolüne üyelik gerektirir.

Örnekler

A. Sunucuda etkili izinleri listeleyin

Aşağıdaki örnek, arayan kişinin sunucudaki etkin izinlerinin listesini geri döndürür.

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

B. Veritabanında etkili izinleri listele

Aşağıdaki örnek, arayan AdventureWorks2025 kişinin veritabanındaki etkin izinlerinin listesini getirir.

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

C. Bir görünümde etkili izinleri listele

Aşağıdaki örnek, AdventureWorks2025 veritabanı şemasındaki görünümdeki Sales arayanın vIndividualCustomer etkin izinlerinin bir listesini geri getirir.

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

D. Başka bir kullanıcının etkili izinlerini listele

Aşağıdaki örnek, AdventureWorks2025 veritabanı şemasında tabloda HumanResources veritabanı kullanıcısının WanidaEmployee etkin izinlerinin listesini döndürür. Arayan, kullanıcı Wanidaiçin izin istiyorIMPERSONATE.

EXECUTE AS USER = 'Wanida';

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

REVERT;
GO

E. Bir sertifikada etkili izinleri listele

Aşağıdaki örnek, mevcut veritabanında adı Shipping47 geçen bir sertifikada arayan kişinin etkin izinlerinin listesini döndürür.

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

F. Bir XML Şema Koleksiyonunda etkili izinleri listele

Aşağıdaki örnek, veritabanında AdventureWorks2025 adlandırılmış ProductDescriptionSchemaCollection bir XML Şema Koleksiyonu üzerindeki çağıranın etkin izinlerinin listesini döndürür.

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

G. Bir veritabanı kullanıcısı üzerinde etkili izinleri listele

Aşağıdaki örnek, mevcut veritabanında adı MalikAr geçen bir kullanıcıya karşı arayan kişinin geçerli izinlerinin listesini döndürür.

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

H. Başka bir giriş için etkili izinleri listele

Aşağıdaki örnek, veritabanı AdventureWorks2025 şemasında tabloda HumanResources SQL Server giriş WanidaBenshoofEmployee için geçerli izinlerin listesini döndürür. Arayan için SQL Server girişinde WanidaBenshoofizin gerekiyorIMPERSONATE.

EXECUTE AS LOGIN = 'WanidaBenshoof';

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

REVERT;
GO