MSDB डेटाबेस TRUSTWORTHY क्यों है?


9

TRUSTWORTHYअगर आप सावधान नहीं कर रहे हैं और विशेष परिस्थितियों सिफारिश इसे बंद कर दिया रखना है के लिए छोड़कर सेटिंग बल्कि खतरनाक हो सकता है। हालाँकि डिफ़ॉल्ट रूप से MSDBडेटाबेस डिफ़ॉल्ट रूप से TRUSTWORHTYसेट ONकिया गया है। मैं उत्सुक हूँ क्यों?

मैंने इस प्रविष्टि को BOL में पढ़ा है

नोट डिफ़ॉल्ट रूप से, TRUSTWORTHY सेटिंग MSDB डेटाबेस के लिए चालू है। अपने डिफ़ॉल्ट मान से इस सेटिंग को बदलने से MSDB डेटाबेस का उपयोग करने वाले SQL सर्वर घटकों द्वारा अप्रत्याशित व्यवहार हो सकता है।

लेकिन मैं बारीकियों के बारे में उत्सुक हूं। विशेष रूप से MSDBआवश्यकता क्यों TRUSTWORTHYचालू है? क्या कार्य इसका उपयोग करते हैं?


2
WHY के लिए शोध के बिना बस एक त्वरित विचार होगा ताकि SQL एजेंट सेवा एक उदाहरण पर सभी DBs के साथ बातचीत कर सके, सूचना, अन्य बाहरी संसाधनों के लिए DB मेल का उपयोग कर सके; रास्ते, विज्ञापन ऑब्जेक्ट्स, आदि SQL एजेंट नौकरियों के भीतर।
पिंप जूस आईटी

1
@JUICED_IT भी SQL एजेंट नौकरी इतिहास, लॉग शिपिंग मॉनिटर इतिहास, SSIS पैकेज, डेटाबेस इंजन ट्यूनिंग सलाहकार डेटा, और सेवा ब्रोकर कतार डेटा, और बैकअप जानकारी। यह ऐसी बहुत सी चीजें हैं जिनसे आप मानक व्यवहार चाहते हैं। sqlperformance.com/2015/07/sql-mainurance/msdb
कॉन्स्टेंटाइनके

मुझे संदेह है कि यह क्रॉस-डेटाबेस कॉल का उपयोग करने वाली किसी भी चीज़ के लिए आवश्यक है। आपको यह देखने के TRUSTWORTHYलिए ऑफ करना चाहिए msdbकि क्या काम करना बंद कर देता है और आपके पास उत्तर का कम से कम हिस्सा होगा :)। मुझे लगा कि BACKUP के मुद्दे होंगे लेकिन मैंने अभी कोशिश की और यह सफल रहा।
सोलोमन रटज़की

जवाबों:


3

डेटाबेस के msdbसंदर्भ में दर्जनों वस्तुएं हैं master

यदि msdb के रूप में चिह्नित नहीं किया गया था TRUSTWORTHY, तो उपयोगकर्ताओं को उन दोनों msdbऑब्जेक्ट की अनुमति की आवश्यकता होगी , जिनके साथ वे बातचीत कर रहे हैं, साथ ही जिस masterऑब्जेक्ट को संदर्भित किया जा रहा है।

उदाहरण के लिए, SQLAgentUserRole डेटाबेस रोल के माध्यम से अनुमति प्राप्त करने वाले msdb उपयोगकर्ताओं को निष्पादित किया जाता है msdb.dbo.sp_enum_sqlagent_subsystems। उस प्रक्रिया के लिए कॉल स्टैक अंततः हिट होता है master:

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

यदि msdbइसे चिह्नित नहीं किया जाता है TRUSTWORTHY, तो जो उपयोगकर्ता SQLAgentUserRole डेटाबेस भूमिका का हिस्सा हैं, उन्हें ALSO की अनुमति की आवश्यकता होगी master.dbo.xp_instance_regread

तकनीकी रूप से बोलना संभव है, इसमें TRUSTWORTHYसेटिंग को हटाना संभव है msdbऔर इसके बजाय में विशिष्ट अनुमति प्रदान करें master। हालाँकि, आवश्यक अनुमतियाँ न तो प्रलेखित हैं और न ही समर्थित हैं।


आप शायद सही हैं लेकिन यदि ऐसा है तो यह भी उतना ही महत्वपूर्ण है कि MSDB के स्वामी के पास उन अनुमतियाँ हैं।
केनेथ फिशर

@ केनेथफिशर शायद? मैं आमतौर पर msdb के लिए डेटाबेस के मालिक के साथ गड़बड़ नहीं करता, इसलिए मुझे यकीन नहीं है। मैंने हमेशा इसे सा के रूप में छोड़ दिया है। मैंने कानूनी तौर पर ऐसा नहीं सोचा था।
AMtwo

आह, लेकिन अगर मुझे MSDB में सही अनुमति है तो मैं आपके सर्वर पर लेने के लिए TRUSTWORTHY के साथ संयोजन में उस सा का उपयोग कर सकता हूं :)
केनेथ फिशर

सच। लेकिन यही कारण है कि सिस्टम डीबी तक पहुंच को सावधानीपूर्वक प्रतिबंधित किया जाना चाहिए। यदि आप DBA नहीं हैं, तो आपको सिस्टम डेटाबेस में आने की आवश्यकता नहीं है।
AMtwo
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.