मैं जानना चाहता हूं कि SQL सर्वर के भीतर अनुमतियां कैसे सेट करें, मेरे आवेदन लॉगिन/भूमिका को msdb.dbo.sp_send_dbmail
का उपयोग करके ईमेल भेजने में सक्षम होने के लिए।किसी भिन्न डेटाबेस में लॉगिन के लिए SQL सर्वर डेटाबेस मेल प्रक्रियाओं तक पहुंच कैसे प्राप्त करें?
मेरे पास एक डेटाबेस MyDb है, जो उपयोगकर्ता MyUser
है जो AppRole
भूमिका का सदस्य है। मेरे पास संग्रहीत प्रक्रिया myProc
है जो msdb.dbo.sp_send_dbmail
पर कॉल करती है। अगर मैं निष्पादित myProc
जबकि sa
रूप में लॉग इन यह सब ठीक काम करता है, लेकिन अगर मैं पर अमल करते हुए MyUser
रूप में लॉग इन करने पर मुझे त्रुटि मिलती है:
Msg 229, Level 14, State 5, Procedure sp_send_dbmail, Line 1
The EXECUTE permission was denied on the object 'sp_send_dbmail', database 'msdb', schema 'dbo'.
मेरे डेटाबेस भरोसेमंद पर नहीं है, इसलिए मुझे लगता है कि मैं कर सकते हैं ' टी एक अलग उपयोगकर्ता का प्रतिरूपण करने के लिए EXECUTE के रूप में उपयोग करें, उदाहरण के लिए MyProc के रूप में EXNUTE के साथ बनाएँ ... (MSDN reference)
इसलिए मुझे लगता है कि मुझे अपने उपयोगकर्ता को एमएसडीबी के भीतर भी उपयोगकर्ता बनाना है, लेकिन क्या मैं इसे रोल स्तर पर कर सकता हूं या मुझे प्रत्येक को बनाने की ज़रूरत है मेरे डेटाबेस उपयोगकर्ता भी msdb में उपयोगकर्ता?
डेटाबेस मेल प्रोफ़ाइल जो मैं उपयोग कर रहा हूं वह सार्वजनिक पर सेट है, इसलिए मुझे नहीं लगता कि यह प्रोफ़ाइल अनुमतियों से संबंधित है।
मैं समाप्त हो गया बस msdb भीतर उन के रूप में मेरे उन का निर्माण। सादगी के लिए मैं @Remus Rusanu प्रमाण पत्र के सुझाव का उपयोग नहीं करना चाहता था हालांकि एक अलग वातावरण में जो एक अच्छा विकल्प हो सकता है। यदि आपके पास बहुत से डेटाबेस उपयोगकर्ता हैं तो एक डीबी उपयोगकर्ता का प्रतिरूपण करने के लिए EXECUTE AS का उपयोग करना संभव हो सकता है और फिर बस उस उपयोगकर्ता को msdb तक पहुंच प्रदान करें - मुझे उस विकल्प को देखने की आवश्यकता नहीं थी। – Rory