GRANT sistem nesne izinleri (Transact-SQL)

Şunlar için geçerlidir: SQL Server Azure SQL Yönetilen Örneği

Sistem nesneleri için izinler, örneğin sistem depolanmış prosedürler, genişletilmiş depolanmış prosedürler, fonksiyonlar ve görünümler.

Transact-SQL söz dizimi kuralları

Syntax

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

Arguments

[ sys. ]

Sistem nitelendirmesi yalnızca katalog görünümleri ve dinamik yönetim görünümleri için gereklidir.

system_object

İzin verilen nesneyi belirtir.

principal

İzin verilen sorumluyu belirtir.

Remarks

Bu ifade, SQL Server tarafından kurulan belirli depolanmış prosedürler, genişletilmiş depolanmış prosedürler, tablo değerli fonksiyonlar, skaler fonksiyonlar, 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ı üzerinde izinler vermek için kullanılabilir. Bu sistem nesnelerinin her biri, sunucunun kaynak veritabanında (mssqlsystemresource) benzersiz bir kayıt olarak mevcuttur. Kaynak veritabanı salt okunurdur. Nesneye bir bağlantı, her veritabanının sistem şemasında bir kayıt olarak açığa çıkar. Bir sistem nesnesini çalıştırma veya seçme izni verilebilir, reddedilebilir veya iptal edilebilir.

Bir nesneyi çalıştırmak veya seçmek için izin vermek, nesneyi kullanmak için gereken tüm izinleri mutlaka taşımaz. Çoğu nesne, ekstra izin gerektiren işlemleri gerçekleştirir. Örneğin, izin verilen bir kullanıcı EXECUTEsp_addlinkedserver , aynı zamanda sistem yöneticisi sabit sunucu rolünün üyesi olmadıkça bağlı bir sunucu oluşturamaz.

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

Tetikleyiciler ve sistem nesnelerinin sütunları üzerinde izin verilmesi desteklenmemektedir.

Sistem nesneleri üzerindeki izinler, SQL Server'ın yükseltmeleri sırasında korunur.

İzinleri vermek için veritabanında olmalısınız master ve izin verdiğiniz müdür veritabanında master bir kullanıcı olmalıdır. Yani, eğer sunucu düzeyinde izinlerse, bunları sunucu yöneticilerine veremezsiniz, sadece veritabanı yöneticilerine verebilirsiniz.

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 izni gerektirir.

Examples

A. Bir görünüm üzerinde SELECT izni ver

Aşağıdaki örnek, SQL Server giriş Sylvester1 iznine SQL Server girişlerini listeleyen bir görünüm seçme izni verir. Örnek, kullanıcının sahip olmadığı SQL Server girişlerinde meta verileri görüntülemek için gereken ek izni verir.

USE master;
GO
GRANT SELECT ON sys.sql_logins TO Sylvester1;
GRANT VIEW SERVER STATE to Sylvester1;
GO

B. Genişletilmiş bir depolanmış prosedür üzerinde EXECUTE izni ver

Aşağıdaki örnekEXECUTE, 'ye Sylvester1izin xp_readmail verir.

USE master;
GO
GRANT EXECUTE ON xp_readmail TO Sylvester1;
GO