Sqlserver
 sql >> डेटाबेस >  >> RDS >> Sqlserver

SQL सर्वर (T-SQL) में डेटाबेस मेल के लिए एक डिफ़ॉल्ट सार्वजनिक प्रोफ़ाइल बनाएँ

जब आप 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;


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SqlDataSourceEnumerator.Instance.GetDataSources() स्थानीय SQL सर्वर 2008 आवृत्ति का पता नहीं लगाता है

  2. टी-एसक्यूएल में 'निष्पादित' का उपयोग कर चर के लिए मूल्य कैसे सेट करें?

  3. SQL सर्वर ट्रांजेक्शनल प्रतिकृति कॉन्फ़िगरेशन

  4. SQL सर्वर तालिका में डिफ़ॉल्ट मान के साथ कॉलम सम्मिलित करने के लिए SQL DEFAULT बाधा

  5. STUFF () का उपयोग करके SQL सर्वर में किसी अन्य स्ट्रिंग में स्ट्रिंग कैसे सम्मिलित करें