Kapak/örtük izinler (Veritabanı Altyapısı)
Içinde SQL Server izinleri hiyerarşi, belirli bir izin verme implication diğer izinleri, hakları ileten. Üst düzey izinlere olarak açıklanan Kapak ayrıntılı, düşük düzeyli izinleri, bunlar durumunun oluştuğunu.
dbo.ImplyingPermissions
Aşağıdaki örnek komut dosyası, bağımsız değişken olarak bir sınıfın bir güvenliği sağlanabilir ve bir izin adını alır.Örnek bir belirtilen kök düğümden izinleri hiyerarşi inceler: Sunucu üzerinde DENETIM SERVER. Örnek implication tarafından belirtilmiş izni içeren Yetkiler listesine gösterir.
CREATE FUNCTION dbo.ImplyingPermissions (@class nvarchar(64),
@permname nvarchar(64))
RETURNS @ImplPerms table (permname nvarchar(64),
class nvarchar(64), height int, rank int)
AS
BEGIN
WITH
class_hierarchy(class_desc, parent_class_desc)
AS
(
SELECT DISTINCT class_desc, parent_class_desc
FROM sys.fn_builtin_permissions('')
),
PermT(class_desc, permission_name, covering_permission_name,
parent_covering_permission_name, parent_class_desc)
AS
(
SELECT class_desc, permission_name, covering_permission_name,
parent_covering_permission_name, parent_class_desc
FROM sys.fn_builtin_permissions('')
),
permission_covers(permission_name, class_desc, level,
inserted_as)
AS
(
SELECT permission_name, class_desc, 0, 0
FROM PermT
WHERE permission_name = @permname AND
class_desc = @class
UNION ALL
SELECT covering_permission_name, class_desc, 0, 1
FROM PermT
WHERE class_desc = @class AND
permission_name = @permname AND
len(covering_permission_name) > 0
UNION ALL
SELECT PermT.covering_permission_name,
PermT.class_desc, permission_covers.level,
permission_covers.inserted_as + 1
FROM PermT, permission_covers WHERE
permission_covers.permission_name =
PermT.permission_name AND
permission_covers.class_desc = PermT.class_desc
AND len(PermT.covering_permission_name) > 0
UNION ALL
SELECT PermT.parent_covering_permission_name,
PermT.parent_class_desc,
permission_covers.level + 1,
permission_covers.inserted_as + 1
FROM PermT, permission_covers, class_hierarchy
WHERE permission_covers.permission_name =
PermT.permission_name AND
permission_covers.class_desc = PermT.class_desc
AND permission_covers.class_desc = class_hierarchy.class_desc
AND class_hierarchy.parent_class_desc =
PermT.parent_class_desc AND
len(PermT.parent_covering_permission_name) > 0
)
INSERT @ImplPerms
SELECT DISTINCT permission_name, class_desc,
level, max(inserted_as) AS mia
FROM permission_covers
GROUP BY class_desc, permission_name, level
ORDER BY level, mia
RETURN
END
C.ALTER izninin bir şema durumunun oluştuğunu liste izinleri
SELECT * FROM dbo.ImplyingPermissions('schema', 'alter')
b.Görünüm TANıMıNı izni nesnedeki durumunun oluştuğunu izinleri listeleniyor.
SELECT * FROM dbo.ImplyingPermissions('object', 'view definition')
c.yol üzerinde ALıN SAHIPLIK izni durumunun oluştuğunu izinleri listeleniyor.
SELECT * FROM dbo.ImplyingPermissions('route', 'take ownership')
d.Bir XML şeması derlemesi üzerinde yürütmek izni durumunun oluştuğunu liste izinleri
SELECT * FROM dbo.ImplyingPermissions('xml schema collection', 'execute')
See Also