जब आप sp_send_dbmail
. का उपयोग करते हैं SQL सर्वर में ईमेल भेजने के लिए संग्रहीत कार्यविधि, आप आमतौर पर @profile_name
. शामिल करेंगे यह निर्दिष्ट करने के लिए तर्क कि किस प्रोफ़ाइल का उपयोग करना है।
हालांकि, अगर आप इस तर्क को छोड़ देते हैं, sp_send_dbmail
वर्तमान उपयोगकर्ता के लिए डिफ़ॉल्ट निजी प्रोफ़ाइल का उपयोग करेगा। यदि उपयोगकर्ता के पास डिफ़ॉल्ट निजी प्रोफ़ाइल नहीं है, तो sp_send_dbmail
msdb
. के लिए डिफ़ॉल्ट सार्वजनिक प्रोफ़ाइल का उपयोग करेगा डेटाबेस।
यदि इनमें से कोई भी कॉन्फ़िगर नहीं किया गया है, तो आपको निम्न त्रुटि मिलेगी:
Msg 14636, Level 16, State 1, Procedure msdb.dbo.sp_send_dbmail, Line 112 No global profile is configured. Specify a profile name in the @profile_name parameter.
यदि आपको यह त्रुटि हो रही है, तो आपके पास मूल रूप से तीन विकल्प हैं:
@profile_name
. शामिल करके निर्दिष्ट करें कि किस प्रोफ़ाइल का उपयोग करना हैsp_send_dbmail
. को कॉल करते समय तर्क प्रक्रिया।- वर्तमान उपयोगकर्ता के लिए एक डिफ़ॉल्ट निजी प्रोफ़ाइल बनाएं।
msdb
. के लिए एक सार्वजनिक प्रोफ़ाइल बनाएं डेटाबेस।
यह आलेख तीसरे विकल्प का एक उदाहरण प्रदान करता है:msdb
. के लिए एक सार्वजनिक प्रोफ़ाइल बनाएं डेटाबेस।
उदाहरण
यहां एक उदाहरण दिया गया है जो डेटाबेस मेल प्रोफ़ाइल बनाने, डेटाबेस मेल खाता बनाने, प्रोफ़ाइल में खाता जोड़ने, फिर उस प्रोफ़ाइल तक सार्वजनिक पहुंच प्रदान करने की प्रक्रिया से गुजरता है।
-- Create a Database Mail profile
EXECUTE msdb.dbo.sysmail_add_profile_sp
@profile_name = 'DB Public Profile',
@description = 'Public Profile for emails.';
-- Create a Database Mail account
EXECUTE msdb.dbo.sysmail_add_account_sp
@account_id = 1,
@account_name = 'DB Public',
@description = 'Public account for emails.',
@email_address = '[email protected]',
@replyto_address = '[email protected]',
@display_name = 'DB Public Mailer',
@mailserver_name = 'smtp.example',
@port = 587;
-- Add the account to the profile
EXECUTE msdb.dbo.sysmail_add_profileaccount_sp
@profile_name = 'DB Public Profile',
@account_name = 'DB Public',
@sequence_number = 1;
-- Grant the public principal access to the profile
EXECUTE msdb.dbo.sysmail_add_principalprofile_sp
@profile_name = 'DB Public Profile',
@principal_name = 'public',
@is_default = 1;
अंतिम पंक्ति वास्तव में वह हिस्सा है जो इसे डिफ़ॉल्ट सार्वजनिक प्रोफ़ाइल बनाती है।
@is_default = 1
. का उपयोग करके , मैं इस प्रोफ़ाइल को डिफ़ॉल्ट सार्वजनिक प्रोफ़ाइल के रूप में सेट कर रहा हूँ। अगर मैंने @is_default = 0
. का इस्तेमाल किया होता इसके बजाय, यह डिफ़ॉल्ट सार्वजनिक प्रोफ़ाइल नहीं होगी।
किसी प्रोफ़ाइल को सार्वजनिक करने के लिए, @principal_id
निर्दिष्ट करें का 0
या एक @principal_name
public
. का . एक सार्वजनिक प्रोफ़ाइल msdb
. में सभी उपयोगकर्ताओं के लिए उपलब्ध है डेटाबेस (हालांकि उपयोगकर्ताओं को DatabaseMailUserRole
. का सदस्य भी होना चाहिए निष्पादित करने के लिए sp_send_dbmail
)।
ध्यान दें कि केवल एक डिफ़ॉल्ट सार्वजनिक प्रोफ़ाइल हो सकती है।
मौजूदा प्रोफ़ाइल अपडेट करें
यदि आपके पास पहले से ही एक सार्वजनिक प्रोफ़ाइल है, लेकिन यह डिफ़ॉल्ट सार्वजनिक प्रोफ़ाइल नहीं है, तो आप sysmail_update_principalprofile_sp
का उपयोग कर सकते हैं इसे बदलने के लिए।
उदाहरण:
EXECUTE msdb.dbo.sysmail_update_principalprofile_sp
@profile_name = 'DB Public Profile',
@principal_name = 'public',
@is_default = 1;