Aracılığıyla paylaş


DENY sistem nesnesi izinleri (Transact-SQL)

Şunlar için geçerlidir:SQL ServerAzure SQL VeritabanıAzure SQL Yönetilen ÖrneğiMicrosoft Fabric'te SQL veritabanı

Saklı yordamlar, genişletilmiş saklı yordamlar, işlevler ve görünümler gibi sistem nesneleri üzerindeki izinleri reddeder.

Transact-SQL söz dizimi kuralları

Syntax

DENY { SELECT | EXECUTE } ON [ sys. ] system_object TO principal

Arguments

[ sys. ]

Niteleyici sys yalnızca katalog görünümlerine ve dinamik yönetim görünümlerine başvururken gereklidir.

system_object

İznin reddedildiği nesneyi belirtir.

principal

İznin iptal edildiği sorumluyu belirtir.

Remarks

Bu deyim, SQL Server tarafından yüklenen belirli saklı yordamlar, genişletilmiş saklı yordamlar, tablo değerli işlevler, skaler işlevler, görünümler, katalog görünümleri, uyumluluk görünümleri, INFORMATION_SCHEMA görünümler, dinamik yönetim görünümleri ve sistem tabloları üzerindeki izinleri reddetmek için kullanılabilir. Bu sistem nesnelerinin her biri, kaynak veritabanında (mssqlsystemresource ) benzersiz bir kayıt olarak bulunur. Kaynak veritabanı salt okunurdur. Nesneye bağlantı, her veritabanının şemasında sys bir kayıt olarak gösterilir.

Varsayılan ad çözümlemesi, nitelenmemiş yordam adlarını kaynak veritabanına çözümler. Bu nedenle, sys niteleyici yalnızca katalog görünümlerini ve dinamik yönetim görünümlerini belirtirken gereklidir.

Caution

Sistem nesneleri üzerindeki izinlerin reddedilmesi, bunlara bağımlı olan uygulamaların başarısız olmasına neden olur. SQL Server Management Studio katalog görünümlerini kullanır ve katalog görünümlerindeki varsayılan izinleri değiştirirseniz beklendiği gibi çalışmayabilir.

Tetikleyicilerde ve sistem nesnelerinin sütunlarında izinleri reddetme desteklenmez.

Sql Server yükseltmeleri sırasında sistem nesneleri üzerindeki izinler korunur.

Sistem nesneleri sys.system_objects katalog görünümünde görünür. Sistem nesneleri üzerindeki izinler, veritabanındaki master katalog görünümünde görünür.

Aşağıdaki sorgu, sistem nesnelerinin izinleri hakkında bilgi döndürür:

SELECT *
FROM master.sys.database_permissions AS dp
     INNER JOIN sys.system_objects AS so
         ON dp.major_id = so.object_id
WHERE dp.class = 1
      AND so.parent_object_id = 0;
GO

Permissions

CONTROL SERVER izin gerektirir.

Examples

Aşağıdaki örnekEXECUTE iznini xp_cmdshell reddeder.

DENY EXECUTE ON sys.xp_cmdshell TO PUBLIC;
GO