MSDB veritabanı neden TRUSTWORTHY?


9

TRUSTWORTHYEğer dikkatli değilseniz ve öneri kapanmış tutmaktır belirli durumlar için hariç eğer ayar oldukça tehlikeli olabilir. Ancak varsayılan olarak MSDBveritabanı varsayılan olarak TRUSTWORHTYayarlanmıştır ON. Nedenini merak ediyorum?

Bu girişi BOL'de okudum

Not Varsayılan olarak, MSDB veritabanı için TRUSTWORTHY ayarı ON olarak ayarlanmıştır. Bu ayarın varsayılan değerinden değiştirilmesi, MSDB veritabanını kullanan SQL Server bileşenleri tarafından beklenmeyen davranışlara neden olabilir.

Ama detayları merak ediyorum. Neden özel olarak MSDBihtiyaç TRUSTWORTHYaçık? Hangi işlevler kullanıyor?


2
NEDEN için araştırma yapılmadan sadece hızlı bir düşünce, SQL Agent hizmetinin bir örnek üzerindeki tüm DB'lerle etkileşime girerek bildirimler, diğer harici kaynaklar için DB postasını kullanmak; SQL Agent işlerindeki yollar, AD nesneleri vb.
Pezevenk Suyu IT

1
@JUICED_IT ayrıca SQL Agent iş geçmişi, günlük gönderim izleme geçmişi, SSIS paketleri, Veritabanı Motoru Ayarlama Danışmanı verileri ve Service Broker kuyruk verileri ve yedekleme bilgileri. Bu standart davranış istediğiniz bir çok şeydir. sqlperformance.com/2015/07/sql-maintenance/msdb
ConstantineK

Çapraz veritabanı çağrıları kullanan herhangi bir şey için gerekli olduğundan şüpheleniyorum. Neyin çalışmayı durdurduğunu görmek TRUSTWORTHYiçin KAPALI konuma getirmelisiniz msdbve cevabın en azından bir bölümüne sahip olacaksınız :). YEDEKLEME'nin sorunları olacağını düşündüm ama denedim ve başarılı oldu.
Solomon Rutzky

Yanıtlar:


3

msdbBu masterveritabanında onlarca nesne var .

Msdb olarak işaretlenmemişse TRUSTWORTHY, kullanıcıların hem msdbetkileşimde bulundukları nesneye hem de başvurulan nesneye izin vermesi gerekir master.

Örneğin, SQLAgentUserRole veritabanı rolü üzerinden izin alan msdb kullanıcılarına yürütme izni verilir msdb.dbo.sp_enum_sqlagent_subsystems. Bu yordam için çağrı yığını nihayetinde vurur master:

* msdb.dbo.sp_enum_sqlagent_subsystems
    * msdb.dbo.sp_enum_sqlagent_subsystems_internal
        * master.dbo.xp_instance_regread

Eğer msdbolarak işaretlenmemiş TRUSTWORTHYAYRICA izni yürütmek gerek olacağını SQLAgentUserRole veritabanı rolünün bir parçası, o zaman kullanıcılar master.dbo.xp_instance_regread.

Teknik olarak konuşursak, muhtemelen TRUSTWORTHYayarı kaldırmak msdbve yerine belirli izinler vermek mümkündür master. Ancak, gerekli izinler belgelenmez veya desteklenmez.


Muhtemelen haklısınız, ancak öyleyse MSDB sahibinin bu izinlere sahip olması da aynı derecede önemlidir.
Kenneth Fisher

@KennethFisher Muhtemelen? Genellikle msdb için veritabanı sahibi ile karışıklık yok, bu yüzden emin değilim. Her zaman sa olarak bıraktım. Bunu meşru bir şekilde düşünmemiştim.
İki

Ahh ama MSDB'de doğru izinlere sahipsem, bu sa erişimini sunucunuzu ele geçirmek için TRUSTWORTHY ile birlikte kullanabilirim :)
Kenneth Fisher

Doğru. Ancak bu nedenle sistem DB'lerine erişim dikkatle kısıtlanmalıdır. Bir DBA değilseniz, bir sistem veritabanına girmeniz gerekmez.
İki
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.