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

SQL सर्वर में डेटाबेस मेल को कॉन्फ़िगर करना

SQL सर्वर डेटाबेस मेल को SQL Server 2005 में पेश किया गया है। डेटाबेस मेल एक घटक है जो SQL सर्वर इंजन का उपयोग करके ईमेल भेज सकता है। डेटाबेस मेल का उपयोग करते हुए, एक व्यवस्थापक या एक डेवलपर अंतिम उपयोगकर्ता को क्वेरी आउटपुट भेज सकता है। ईमेल अलर्ट और नोटिफिकेशन प्राप्त करने के लिए डीबीए इसे कॉन्फ़िगर कर सकते हैं। डेटाबेस मेल प्राप्तकर्ताओं को ईमेल डिलीवर करने के लिए SMTP (सिंपल मेल ट्रांसफर प्रोटोकॉल) का उपयोग करता है।

इस लेख में, मैं प्रदर्शित करने जा रहा हूँ कि SQL सर्वर डेटाबेस मेल को कैसे कॉन्फ़िगर किया जाए।

डेटाबेस मेल सक्षम करने के लिए आवश्यक शर्तें

डेटाबेस मेल सुविधा को सक्षम करने के लिए, निम्नलिखित पूर्वापेक्षाएँ आवश्यक हैं:

  1. MSDB डेटाबेस के लिए सर्विस ब्रोकर सक्षम होना चाहिए।
  2. SQL सर्वर एजेंट सेवा चल रही होनी चाहिए।

सेवा ब्रोकर सक्षम होना चाहिए

डेटाबेस मेल को ईमेल को कतारबद्ध करने के लिए सेवा दलाल की आवश्यकता होती है। यदि सेवा दलाल अक्षम है, तो डेटाबेस मेल सेवा दलाल संदेशों को वितरित नहीं कर सकता है और यह सेवा दलाल कतार में रहता है।
यह सत्यापित करने के लिए कि सेवा दलाल सक्षम है, निम्नलिखित क्वेरी निष्पादित करें:

USE master 
go 

SELECT database_id AS 'Database ID', 
       NAME        AS 'Database Name', 
       CASE 
         WHEN is_broker_enabled = 0 THEN 'Service Broker is disabled.' 
         WHEN is_broker_enabled = 1 THEN 'Service Broker is Enabled.' 
       END         AS 'Service Broker Status' 
FROM   sys.databases 
WHERE  NAME = 'msdb.'

आउटपुट इस प्रकार दिखता है:

यदि MSDB डेटाबेस पर सर्विस ब्रोकर अक्षम है, तो सर्विस ब्रोकर को सक्षम करने के लिए निम्नलिखित प्रश्नों को क्रम से निष्पादित करें:

Use master
go
alter database [MSDB] set single_user with rollback immediate
GO
alter database [MSDB] set Enable_Broker
GO
alter database [MSDB] set multi_user with rollback immediate
GO

SQL सर्वर एजेंट सेवा चालू होनी चाहिए

डेटाबेस मेल SQL सर्वर एजेंट सेवा का उपयोग करके ईमेल या संदेश भेजता है। यदि एजेंट सेवाएं नहीं चल रही हैं, तो SQL सर्वर ईमेल नहीं भेज सकता है। जबकि एजेंट सेवा नहीं चल रही है, सभी संदेश कतारबद्ध हो जाएंगे, और जब एजेंट सेवा शुरू होगी, तो सभी कतारबद्ध संदेश वितरित किए जाएंगे।

एजेंट सेवा की स्थिति को सत्यापित करने के लिए, SQL सर्वर प्रबंधन स्टूडियो में निम्न आदेश निष्पादित करें।

use master
go
EXEC xp_servicecontrol N'querystate',N'SQLAgent$CMS'

आउटपुट इस प्रकार दिखता है:

यदि SQL सर्वर एजेंट सेवा नहीं चल रही है, तो हमें इसे शुरू करने की आवश्यकता है। SQL सर्वर एजेंट सेवा प्रारंभ करने के लिए, खोलें सेवाएं , नियंत्रण कक्ष>> व्यवस्थापन उपकरण>> सेवाएं . पर जाएं . सेवाओं की सूची में, SQL सर्वर एजेंट को खोजें . SQL सर्वर एजेंट पर राइट-क्लिक करें और प्रारंभ करें, . चुनें जैसा कि निम्न चित्र में दिखाया गया है:

एक बार सेवा ब्रोकर सक्षम हो जाने पर, और SQL एजेंट सेवा शुरू हो जाने पर, डेटाबेस इंस्टेंस कॉन्फ़िगरेशन पैरामीटर को बदलकर डेटाबेस ईमेल को सक्षम करें। डिफ़ॉल्ट रूप से, डेटाबेस ईमेल सुविधा सक्षम नहीं है। इसे डेटाबेस मेल XPs . के कॉन्फ़िगरेशन मान को बदलकर सक्षम किया जाना चाहिए 0 से 1 तक। फिर से, डेटाबेस मेल XPs पैरामीटर एक उन्नत विकल्प है; इसलिए, इसे बदलने से पहले, उन्नत विकल्प दिखाएं बदलें कॉन्फ़िगरेशन पैरामीटर 0 से 1 तक।

डेटाबेस मेल को सक्षम करने के लिए, निम्नलिखित प्रश्नों को क्रम से निष्पादित करें:

USE master
Go
EXEC sp_configure 'show advanced options', 1 --Enable advance option
Go
RECONFIGURE
Go
EXEC sp_configure 'Database Mail XPs,' 1 --Enable database Mail option
Go
RECONFIGURE
Go
EXEC sp_configure 'show advanced options', 0 --Disabled advanced option
Go
RECONFIGURE
Go

डेटाबेस मेल सक्षम होने के बाद, डेटाबेस मेल प्रोफ़ाइल और डेटाबेस मेल खाता बनाएँ।

डेटाबेस मेल को कॉन्फ़िगर करना

एक बार सभी पूर्वापेक्षाएँ पूरी हो जाने के बाद, डेटाबेस मेल खाता और डेटाबेस मेल प्रोफ़ाइल कॉन्फ़िगर करें।

डेटाबेस मेल प्रोफ़ाइल और खाता बनाना

डेटाबेस मेल खाता और डेटाबेस मेल प्रोफ़ाइल को कॉन्फ़िगर करने के लिए, SQL सर्वर प्रबंधन स्टूडियो खोलें। ऑब्जेक्ट एक्सप्लोरर में, प्रबंधन का विस्तार करें और डेटाबेस मेल कॉन्फ़िगर करें पर राइट-क्लिक करें , जैसा कि निम्न चित्र में दिखाया गया है:

डेटाबेस मेल कॉन्फ़िगरेशन विज़ार्ड डायलॉग बॉक्स खुलता है। संवाद बॉक्स में, निम्न कार्यों को निष्पादित करके डेटाबेस मेल सेटअप करें का चयन करें रेडियो बटन पर क्लिक करें और अगला . क्लिक करें ।

अब, नई प्रोफ़ाइल . में संवाद बॉक्स, एक प्रोफ़ाइल नाम प्रदान करें, एक विवरण जो वैकल्पिक है और जोड़ें . पर क्लिक करें SMTP खाता बनाने के लिए बटन। आप अनेक SMTP खाते कॉन्फ़िगर कर सकते हैं। जब डेटाबेस मेल एक ईमेल भेजता है, तो वह SMTP खाते में सूचीबद्ध प्राथमिकता के आधार पर SMTP खाते का उपयोग करता है जालक दृश्य। यदि ईमेल भेजते समय कोई खाता विफल हो जाता है, तो प्रोफ़ाइल प्राथमिकता सूची में अगले खाते का उपयोग करती है। निम्न चित्र देखें:

नए डेटाबेस मेल खाते में संवाद बॉक्स में उपयुक्त खाता नाम प्रदान करें , विवरण (वैकल्पिक), ईमेल पता , प्रदर्शन नाम , ईमेल का जवाब दें (वैकल्पिक), एसएमटीपी सर्वर और पोर्ट नंबर . यदि एसएमटीपी सर्वर एसएसएल / टीएसएल प्रमाणीकरण का उपयोग करता है, तो सर्वर को सुरक्षित प्रमाणीकरण की आवश्यकता है check की जांच करें विकल्प। प्रमाणीकरण सूची में, एक प्रकार का प्रमाणीकरण चुनें, जिसका उपयोग SMTP सर्वर को प्रमाणित करने के लिए किया जाता है और ठीक पर क्लिक करें। . निम्न चित्र देखें:

डेटाबेस मेल कॉन्फ़िगरेशन विज़ार्ड में वापस जाएं संवाद बॉक्स में, SMTP खाते को SMTP खातों में सूचीबद्ध किया जाएगा जालक दृश्य। निम्न चित्र देखें:

अगला क्लिक करें डेटाबेस मेल प्रोफ़ाइल सुरक्षा को कॉन्फ़िगर करने के लिए। हम डेटाबेस ईमेल प्रोफ़ाइल को निजी या सार्वजनिक रूप से कॉन्फ़िगर कर सकते हैं। केवल एक विशिष्ट उपयोगकर्ता या भूमिका निजी प्रोफ़ाइल का उपयोग करके ईमेल भेज सकती है। कोई भी डेटाबेस उपयोगकर्ता या भूमिका सार्वजनिक प्रोफ़ाइल का उपयोग करके ईमेल भेज सकता है। उपयोगकर्ता MSDB डेटाबेस में बनाए जाने चाहिए, और उन उपयोगकर्ताओं को DatabaseMailUserRole नामक डेटाबेस भूमिका का सदस्य होना चाहिए एक ईमेल भेजने के लिए। हम प्रोफ़ाइल को डिफ़ॉल्ट प्रोफ़ाइल के रूप में भी बना सकते हैं। एक बार प्रोफ़ाइल सुरक्षा सेट हो जाने पर, अगला . क्लिक करें सिस्टम पैरामीटर को कॉन्फ़िगर करने के लिए। कॉन्फ़िगरेशन देखने के लिए निम्न चित्र देखें:

सिस्टम पैरामीटर कॉन्फ़िगर करें . में विंडो, हम कई पुन:प्रयास प्रयास, अधिकतम अनुलग्नक फ़ाइल आकार, फ़ाइल एक्सटेंशन की सूची सेट कर सकते हैं जिन्हें अनुलग्नक के रूप में भेजने से प्रतिबंधित किया गया है। निम्न चित्र देखें:

एक बार सिस्टम पैरामीटर कॉन्फ़िगर हो जाने के बाद, अगला click क्लिक करें संपूर्ण कॉन्फ़िगरेशन और कार्यों की सूची की समीक्षा करने के लिए। समाप्त करें क्लिक करें डेटाबेस मेल कॉन्फ़िगरेशन को पूरा करने के लिए। निम्न चित्र देखें।

कॉन्फ़िगरेशन पूर्ण होने के बाद, बंद करें click क्लिक करें विज़ार्ड से बाहर निकलने के लिए। निम्न चित्र देखें:

T-SQL का उपयोग करके डेटाबेस मेल प्रोफ़ाइल और खाता बनाना और कॉन्फ़िगर करना

हम टी-एसक्यूएल का उपयोग करके डेटाबेस मेल प्रोफाइल और मेल अकाउंट को भी कॉन्फ़िगर कर सकते हैं। डेटाबेस मेल को कॉन्फ़िगर करने के लिए, उपयोगकर्ता के पास निम्न संग्रहीत कार्यविधि पर 'निष्पादित' अनुमति होनी चाहिए।

  1. Sysmail_add_account_sp
  2. Sysmail_add_profile_sp
  3. Sysmail_add_profileaccount_sp

Sysmail_add_account_sp प्रक्रिया डेटाबेस मेल के लिए एक खाता बनाती है। डेटाबेस मेल के लिए खाता बनाने के लिए, निम्नलिखित कोड निष्पादित करें:

EXEC msdb.dbo.sysmail_add_account_sp
    @account_name = 'Database Mail Default SMTP account'
  , @description = 'This account will be used to send database mail'
  , @email_address = '[email protected]'
  , @display_name = 'DBA Support'
  , @replyto_address = ''
  , @mailserver_type = 'SMTP'
  , @mailserver_name = '192.168.1.60'
  , @port = 25
Go

Sysmail_add_profile_sp प्रक्रिया एक डेटाबेस मेल प्रोफ़ाइल बनाती है। डेटाबेस मेल प्रोफ़ाइल बनाने के लिए, निम्न कोड निष्पादित करें:

-- Create a Database Mail profile
EXEC msdb.dbo.sysmail_add_profile_sp
    @profile_name = 'Database Mail Profile'
  , @description = 'This profile will be used to send database mail'
Go

Sysmail_add_profileaccount_sp प्रक्रिया SMTP खाते को डेटाबेस मेल प्रोफ़ाइल में जोड़ती है। डेटाबेस मेल प्रोफ़ाइल में SMTP खाता जोड़ने के लिए, निम्न कोड निष्पादित करें:

-- Add the account to the profile
EXEC msdb.dbo.sysmail_add_profileaccount_sp
    @profile_name = 'Database Mail Profile'
  , @account_name = 'Database Mail Default SMTP account'
  , @sequence_number = 1
Go

डेटाबेस मेल का उपयोग करके टेस्ट मेल भेजना

एक बार डेटाबेस मेल कॉन्फ़िगर हो जाने पर, जैसा कि मैंने पहले उल्लेख किया है, ईमेल भेजने के लिए, उपयोगकर्ता को MSDB डेटाबेस में बनाया जाना चाहिए और यह उपयोगकर्ता DatabaseMailUserRole का सदस्य होना चाहिए। . यह डेटाबेस उपयोगकर्ता को डेटाबेस मेल का उपयोग करके ईमेल भेजने की अनुमति देता है। डेटाबेस उपयोगकर्ता के पास निम्न संग्रहीत कार्यविधियों पर निष्पादित अनुमति होनी चाहिए, जिसका उपयोग डेटाबेस मेल को प्रबंधित करने के लिए किया जाता है:

  • sysmail_help_status_sp
  • sysmail_delete_mailitems_sp
  • sysmail_allitems
  • sysmail_event_log
  • sysmail_faileditems
  • sysmail_mailattachments
  • sysmail_sentitems
  • sysmail_unsentitems

SSMS का उपयोग करके एक परीक्षण ईमेल भेजने के लिए, SQL सर्वर प्रबंधन स्टूडियो खोलें>> प्रबंधन का विस्तार करें SQL सर्वर प्रबंधन में>> डेटाबेस मेल पर राइट-क्लिक करें और टेस्ट मेल भेजें select चुनें . निम्न चित्र देखें:

परीक्षण ईमेल भेजें डायलॉग बॉक्स खुलता है। डेटाबेस मेल प्रोफ़ाइल . में ड्रॉप-डाउन, ईमेल भेजने के लिए उपयोग की जाने वाली प्रोफ़ाइल का नाम चुनें (डेटाबेस मेल प्रोफ़ाइल), प्रति में टेक्स्ट बॉक्स में, ईमेल प्राप्तकर्ता का ईमेल पता प्रदान करें और टेस्ट मेल भेजें click पर क्लिक करें . निम्न चित्र देखें:

हम टी-एसक्यूएल कोड का उपयोग करके ईमेल भी भेज सकते हैं। ऐसा करने के लिए, निम्न T-SQL स्क्रिप्ट निष्पादित करें:

use MSDB
go
EXEC msdb.dbo.sp_send_dbmail
    @profile_name = 'Database Mail Profile'
  , @recipients = '[email protected]'
  , @subject = 'Automated Test Results (Successful)'
  , @body = 'The stored procedure finished successfully.'
Go

ईमेल स्थिति जांचने के लिए आवश्यक तालिकाओं की सूची

निम्नलिखित तालिकाओं की सूची है, जिनका उपयोग कॉन्फ़िगरेशन डेटाबेस मेल, डेटाबेस खाता और ईमेल की स्थिति देखने के लिए किया जाता है।

[टेबल आईडी=53 /]

डेटाबेस मेल लॉग देखने के लिए, SQL सर्वर प्रबंधन स्टूडियो खोलें>> प्रबंधन का विस्तार करें>> डेटाबेस मेल पर राइट-क्लिक करें और डेटाबेस मेल लॉग देखें . चुनें . निम्न चित्र देखें:

लॉग फ़ाइल व्यूअर संवाद खुलता है, जैसा कि निम्न चित्र में दिखाया गया है:

डेटाबेस मेल खाता और प्रोफ़ाइल छोड़ना

डेटाबेस मेल प्रोफ़ाइल को छोड़ने के लिए, पहले डेटाबेस मेल प्रोफ़ाइल को छोड़ें। ऐसा करने के लिए, डेटाबेस मेल विज़ार्ड कॉन्फ़िगर करें, खोलें जैसा कि लेख की शुरुआत में बताया गया है। विज़ार्ड में, डेटाबेस मेल खाता और प्रोफ़ाइल प्रबंधित करें चुनें और अगला . क्लिक करें . निम्न चित्र देखें:

प्रोफ़ाइल और खाता प्रबंधित करें . पर पृष्ठ पर, परिवर्तन देखें या मौजूदा प्रोफ़ाइल हटाएं का चयन करें और अगला . क्लिक करें . निम्न चित्र देखें:

मौजूदा प्रोफ़ाइल प्रबंधित करें . पर पृष्ठ, उस प्रोफ़ाइल के नाम का चयन करें जिसे आप प्रोफ़ाइल नाम . से हटाना चाहते हैं ड्रॉप-डाउन बॉक्स और हटाएं . क्लिक करें बटन और क्लिक करें अगला। निम्न चित्र देखें:

इसके बाद, स्क्रीन कार्रवाई का सारांश प्रदर्शित करेगी, सारांश की समीक्षा करेगी और समाप्त . पर क्लिक करेगी प्रोफ़ाइल छोड़ने के लिए। निम्न चित्र देखें:

डेटाबेस मेल प्रोफ़ाइल को छोड़ने के बाद, डेटाबेस खाते को छोड़ दें। ऐसा करने के लिए, डेटाबेस मेल कॉन्फ़िगरेशन विज़ार्ड खोलें . पर>> डेटाबेस मेल खाते और प्रोफ़ाइल प्रबंधित करें select चुनें>> मौजूदा खाते को देखें, बदलें या हटाएं चुनें विकल्प पर क्लिक करें और अगला . पर क्लिक करें निम्न चित्र देखें:

मौजूदा खाता प्रबंधित करें . पर पृष्ठ, खाता नाम . से ड्रॉप-डाउन बॉक्स में, उस खाते का नाम चुनें जिसे आप हटाना चाहते हैं और हटाएं . पर क्लिक करें बटन, जैसा कि निम्न चित्र में दिखाया गया है:

निम्न स्क्रीन कार्रवाई का सारांश प्रदर्शित करेगी, सारांश की समीक्षा करेगी और समाप्त click पर क्लिक करेगी खाता छोड़ने के लिए। निम्न चित्र देखें:

T-SQL का उपयोग करके डेटाबेस मेल खाता और प्रोफ़ाइल छोड़ना

आप टी-एसक्यूएल स्क्रिप्ट को क्रियान्वित करके डेटाबेस मेल अकाउंट और डेटाबेस मेल प्रोफाइल को भी छोड़ सकते हैं। डेटाबेस प्रोफ़ाइल और खाते को छोड़ने के लिए, निम्न कोड निष्पादित करें:

IF EXISTS(SELECT * 
            FROM msdb.dbo.sysmail_profileaccount pa 
              INNER JOIN msdb.dbo.sysmail_profile p ON pa.profile_id = p.profile_id 
              INNER JOIN msdb.dbo.sysmail_account a ON pa.account_id = a.account_id   
            WHERE p.name = 'Database Mail Profile' 
              AND a.name = 'Database Mail Default SMTP account') 
  BEGIN 
    EXECUTE msdb.dbo.sysmail_delete_profileaccount_sp @profile_name = 'Database Mail Profile',@account_name = 'Database Mail Default SMTP account' 
  END  
IF EXISTS(SELECT * FROM msdb.dbo.sysmail_account WHERE  name = 'Database Mail Default SMTP account') 
  BEGIN 
    EXECUTE msdb.dbo.sysmail_delete_account_sp @account_name = 'Database Mail Default SMTP account' 
  END 
IF EXISTS(SELECT * FROM msdb.dbo.sysmail_profile WHERE  name = 'Database Mail Profile')  
  BEGIN 
    EXECUTE msdb.dbo.sysmail_delete_profile_sp @profile_name = 'Database Mail Profile' 
  END
निष्पादित करें

यह सत्यापित करने के लिए कि डेटाबेस मेल और डेटाबेस खाता हटा दिया गया है, निम्न क्वेरी निष्पादित करें:

SELECT * 
            FROM msdb.dbo.sysmail_profileaccount pa 
              INNER JOIN msdb.dbo.sysmail_profile p ON pa.profile_id = p.profile_id 
              INNER JOIN msdb.dbo.sysmail_account a ON pa.account_id = a.account_id   
            WHERE p.name = 'Database Mail Profile' 
              AND a.name = 'Database Mail Default SMTP account'

सारांश

इस लेख में, मैंने समझाया है:

  1. डेटाबेस मेल क्या हैं और इसका उद्देश्य क्या है?
  2. डेटाबेस मेल को कॉन्फ़िगर करने के लिए पूर्वापेक्षाएँ।
  3. SQL सर्वर प्रबंधन स्टूडियो का उपयोग करके डेटाबेस मेल खाता और डेटाबेस मेल प्रोफ़ाइल कॉन्फ़िगर करें।
  4. T-SQL का उपयोग करके डेटाबेस मेल खाता और डेटाबेस मेल प्रोफ़ाइल कॉन्फ़िगर करें।
  5. SSMS और T-SQL का उपयोग करके परीक्षण ईमेल भेजें।
  6. डेटाबेस मेल प्रोफ़ाइल और डेटाबेस मेल खाते को कृपापूर्वक छोड़ें।

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL सर्वर में EXISTS लॉजिकल ऑपरेटर का उपयोग कैसे करें - SQL सर्वर / TSQL ट्यूटोरियल पार्ट 125

  2. SQL सर्वर (T-SQL) में CURRENT_TIMESTAMP उदाहरण

  3. एक्सेस में UNPIVOT का अनुकरण कैसे करें?

  4. SQL सर्वर उच्च उपलब्धता:SQL सर्वर फ़ेलओवर क्लस्टर इंस्टेंस स्थापित करें भाग 2

  5. SQL कन्वर्ट दिनांक फ़ंक्शन का उपयोग करने के विभिन्न तरीके