SQL सर्वर अपने डेटाबेस मेल समाधान के माध्यम से ईमेल भेजने की क्षमता प्रदान करता है।
मेल भेजने का वास्तविक कार्य sp_send_dbmail
. के साथ किया जाता है संग्रहीत प्रक्रिया। लेकिन इससे पहले कि आप SQL सर्वर से ईमेल भेजना शुरू करें, आपको डेटाबेस मेल को सक्षम और कॉन्फ़िगर करने की आवश्यकता है।
आप इसे एसएसएमएस जीयूआई, या टी-एसक्यूएल के साथ कर सकते हैं।
यह आलेख दर्शाता है कि इसे टी-एसक्यूएल के साथ कैसे किया जाए। यह मानता है कि आपके सिस्टम पर डेटाबेस मेल को कभी भी सक्षम नहीं किया गया है, और इसलिए यह इसे सक्षम करने में शामिल चरणों से गुजरता है।
यदि आप SSMS GUI का उपयोग करना पसंद करते हैं, तो SQL सर्वर (SSMS) में डेटाबेस मेल कैसे सेटअप करें देखें।
चरण 1:डेटाबेस मेल XP सक्षम करें
SQL सर्वर से कोई मेल भेजने से पहले आपको सबसे पहले जो करना है वह है डेटाबेस मेल विस्तारित संग्रहीत कार्यविधियाँ (डेटाबेस मेल XPs) को सक्षम करना। ये msdb . में हैं सिस्टम डेटाबेस।
इसके लिए यह भी आवश्यक है कि "उन्नत विकल्प दिखाएं" सक्षम हों।
ये डिफ़ॉल्ट रूप से अक्षम हैं। इसलिए यदि आपने पहले कभी अपने सिस्टम पर डेटाबेस मेल का उपयोग नहीं किया है, तो आपको उन्हें सक्षम करने की आवश्यकता होगी।
उन्नत विकल्प और डेटाबेस मेल XP को सक्षम करने का तरीका यहां दिया गया है:
EXEC sp_configure 'show advanced options', '1';
RECONFIGURE
GO
EXEC sp_configure 'Database Mail XPs', 1;
RECONFIGURE
GO
SQL सर्वर को पुनरारंभ करने की कोई आवश्यकता नहीं है। डेटाबेस मेल XP अब उपयोग के लिए उपलब्ध होने चाहिए।
Microsoft वास्तव में अनुशंसा करता है कि इस तरह के उन्नत विकल्पों को केवल एक अनुभवी डेटाबेस व्यवस्थापक या प्रमाणित SQL सर्वर तकनीशियन द्वारा बदला जाना चाहिए, लेकिन इस लेख के उद्देश्य के लिए, मैं मान लूंगा कि आप एक अनुभवी DB व्यवस्थापक हैं जो आपकी मेमोरी को ताज़ा कर रहे हैं 😉पी>
किसी भी स्थिति में, sp_configure
execute को निष्पादित करने के लिए कॉन्फ़िगरेशन विकल्प बदलने के लिए या RECONFIGURE
. चलाने के लिए दोनों पैरामीटर के साथ कथन, आपको ALTER SETTINGS
. प्रदान किया जाना चाहिए सर्वर-स्तरीय अनुमति। ALTER SETTINGS
अनुमति परोक्ष रूप से sysadmin . के पास है और सर्वरव्यवस्थापक निश्चित सर्वर भूमिकाएँ।
चरण 2:एक मेल खाता और प्रोफ़ाइल बनाएं
डेटाबेस मेल सीधे उपयोगकर्ता खाते के बजाय प्रोफ़ाइल के माध्यम से भेजा जाता है।
डेटाबेस मेल के साथ ईमेल भेजने के लिए आपको एक डेटाबेस मेल खाता, एक डेटाबेस मेल प्रोफ़ाइल बनाना होगा, प्रोफ़ाइल में खाता जोड़ना होगा, और फिर उपयोगकर्ता को उस प्रोफ़ाइल तक पहुंच प्रदान करनी होगी। उपयोगकर्ता को msdb
. पर होना चाहिए डेटाबेस।
ऐसा करने के लिए T-SQL कोड कुछ इस तरह दिख सकता है:
-- Switch to the msdb database
USE msdb;
-- Create a user on the msdb database
CREATE USER Marge FOR LOGIN Marge;
-- Create a Database Mail account
EXECUTE msdb.dbo.sysmail_add_account_sp
@account_name = 'DB Admin',
@description = 'Mail account for admin emails.',
@email_address = '[email protected]',
@replyto_address = '[email protected]',
@display_name = 'DB Automated Mailer',
@mailserver_name = 'smtp.example.com',
@port = 25;
-- Create a Database Mail profile
EXECUTE msdb.dbo.sysmail_add_profile_sp
@profile_name = 'DB Admin Profile',
@description = 'Profile for admin emails.';
-- Add the account to the profile
EXECUTE msdb.dbo.sysmail_add_profileaccount_sp
@profile_name = 'DB Admin Profile',
@account_name = 'DB Admin',
@sequence_number = 1;
-- Grant the msdb user access to the Database Mail profile
EXECUTE msdb.dbo.sysmail_add_principalprofile_sp
@profile_name = 'DB Admin Profile',
@principal_name = 'Marge',
@is_default = 1;
आपको विभिन्न विवरणों को अपने साथ बदलना होगा। यह भी मानता है कि आप एक मेल सर्वर निर्दिष्ट करते हैं जो काम करता है, और यह कि आप सही पोर्ट का उपयोग करते हैं।
ध्यान दें कि मेरे पास पहले से ही मेरे सर्वर पर मार्ज नामक लॉगिन था। यहां, मैंने msdb . पर एक उपयोगकर्ता बनाया है उस लॉगिन के लिए डेटाबेस। फिर अंतिम भाग में, मैंने उस उपयोगकर्ता को उस प्रोफ़ाइल तक पहुंच प्रदान की जिसे मैंने अभी बनाया है।
इस उदाहरण में, मैंने एक डेटाबेस मेल खाता बनाया और उसे प्रोफ़ाइल में जोड़ा। आप चाहें तो एक प्रोफ़ाइल में कई खाते जोड़ सकते हैं। मेल भेजते समय यह विफलता के रूप में उपयोगी हो सकता है। यदि पहला खाता विफल हो जाता है, तो वह अगले एक, और अगले एक, इत्यादि का प्रयास करेगा।
एक बार जब आपके पास उपरोक्त कोड (अपने स्वयं के विवरण के साथ) हो, तो आप मेल भेजने में सक्षम होंगे।
चरण 3:मेल भेजें
जैसा कि उल्लेख किया गया है, मेल का वास्तविक प्रेषण sp_send_dbmail
. के साथ किया जाता है संग्रहीत प्रक्रिया।
यहां एक उदाहरण दिया गया है:
EXEC msdb.dbo.sp_send_dbmail
@profile_name = 'DB Admin Profile',
@recipients = '[email protected]',
@body = 'Your favorite SQL Server Agent job just failed',
@subject = 'SQL Server Agent Job: FAILED';
यह एक साधारण ईमेल है जिसमें प्राप्तकर्ता, विषय पंक्ति, ईमेल का मुख्य भाग, आदि जैसी मूलभूत बातें शामिल हैं।
यदि आप कोई प्रोफ़ाइल निर्दिष्ट नहीं करते हैं, तो प्रक्रिया वर्तमान उपयोगकर्ता के लिए डिफ़ॉल्ट निजी प्रोफ़ाइल का उपयोग करेगी। यदि उपयोगकर्ता के लिए कोई डिफ़ॉल्ट निजी प्रोफ़ाइल नहीं है, तो वह msdb के लिए डिफ़ॉल्ट सार्वजनिक प्रोफ़ाइल का उपयोग करेगा डेटाबेस। यदि कोई डिफ़ॉल्ट सार्वजनिक प्रोफ़ाइल नहीं है, तो आपको एक त्रुटि मिलेगी।
अधिक विकल्प
sp_send_dbmail
इस उदाहरण में मैंने जो प्रयोग किया है, उसकी तुलना में प्रक्रिया कुछ अधिक तर्कों को स्वीकार करती है।
यहां sp_send_dbmail
. के लिए आधिकारिक सिंटैक्स दिया गया है प्रक्रिया:
sp_send_dbmail [ [ @profile_name = ] 'profile_name' ]
[ , [ @recipients = ] 'recipients [ ; ...n ]' ]
[ , [ @copy_recipients = ] 'copy_recipient [ ; ...n ]' ]
[ , [ @blind_copy_recipients = ] 'blind_copy_recipient [ ; ...n ]' ]
[ , [ @from_address = ] 'from_address' ]
[ , [ @reply_to = ] 'reply_to' ]
[ , [ @subject = ] 'subject' ]
[ , [ @body = ] 'body' ]
[ , [ @body_format = ] 'body_format' ]
[ , [ @importance = ] 'importance' ]
[ , [ @sensitivity = ] 'sensitivity' ]
[ , [ @file_attachments = ] 'attachment [ ; ...n ]' ]
[ , [ @query = ] 'query' ]
[ , [ @execute_query_database = ] 'execute_query_database' ]
[ , [ @attach_query_result_as_file = ] attach_query_result_as_file ]
[ , [ @query_attachment_filename = ] query_attachment_filename ]
[ , [ @query_result_header = ] query_result_header ]
[ , [ @query_result_width = ] query_result_width ]
[ , [ @query_result_separator = ] 'query_result_separator' ]
[ , [ @exclude_query_output = ] exclude_query_output ]
[ , [ @append_query_error = ] append_query_error ]
[ , [ @query_no_truncate = ] query_no_truncate ]
[ , [ @query_result_no_padding = ] @query_result_no_padding ]
[ , [ @mailitem_id = ] mailitem_id ] [ OUTPUT ]
प्रत्येक तर्क की विस्तृत व्याख्या के लिए Microsoft के दस्तावेज़ देखें।
डेटाबेस मेल संदर्भ
डेटाबेस मेल ट्यूटोरियल की विस्तृत सूची के लिए डेटाबेस मेल ट्यूटोरियल देखें। यह एक अच्छा संदर्भ हो सकता है, क्योंकि प्रत्येक ट्यूटोरियल डेटाबेस मेल के एक विशिष्ट भाग से संबंधित है।