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

नौकरी से निष्पादित sp_send_dbmail फ़ाइल के रूप में संलग्न क्वेरी परिणाम के साथ विफल रहता है

मैं उस मुद्दे के समाधान के लिए आया हूं। पता नहीं क्यों यह काम करेगा लेकिन कभी कम नहीं। :)यह निश्चित रूप से सुरक्षा के बारे में है।

मैंने जांच की है कि SQL एजेंट डोमेन उपयोगकर्ता की ओर से चल रहा है, जैसे DOMAIN\User इसमें सर्वर पर व्यवस्थापक अधिकारों का पूरा सेट है ('sysadmin' सर्वर भूमिका, आदि)। SQL सर्वर स्वयं उसी उपयोगकर्ता के अंतर्गत चल रहा है।

कार्य का चरण जिसमें sp_send_dbmail . पर कॉल शामिल है एक ही DOMAIN\User . के अंतर्गत चलता है ।

मैंने यह भी पता लगाया है कि sp_send_dbmail . के क्वेरी भाग को चलाते समय यह निष्पादित करने का प्रयास करता हैexec xp_logininfo 'DOMAIN\User' सक्रिय निर्देशिका के विरुद्ध जाँच करने के लिए यदि वह उपयोगकर्ता ठीक है। और आश्चर्य:कुछ निश्चित रूप से ठीक नहीं है। इस चेक के साथ समाप्त होता है:

Msg 15404, Level 16, State 19, Server SQLC002INS02\SQLC002INS02, Line 1
Could not obtain information about Windows NT group/user 'DOMAIN\User.', error code 0x2.

कुछ संभावना के साथ इसका मतलब यह हो सकता है कि उस उपयोगकर्ता के पासवर्ड की समय सीमा समाप्त हो गई है या उपयोगकर्ता लॉक हो गया है या उस व्यक्ति के लिए कोई अन्य सुखद चीजें नहीं हैं।

मैंने फैसला किया कि एजेंट के लिए उपयोगकर्ता को बदलना जोखिम भरा है। इसलिए मैं 'sa' की ओर से मेल भेजने के लिए आया हूं जिसमें समान 'sysadmin' सर्वर भूमिका है लेकिन SQL प्राधिकरण और इस AD जाँच चरण को छोड़ देता है।

ऐसा लगता है कि एक उपयोगकर्ता वास्तविक व्यवस्थापक से उसके लिए खतरनाक कोड चलाने के लिए कहने के लिए व्यवस्थापक होने का दिखावा करता है :)

तो इस नौकरी का अंतिम कोड पहला और एकमात्र चरण जैसा दिखता है:

execute as login = 'sa'
exec msdb.dbo.sp_send_dbmail 
    @profile_name = 'profile_name', 
    @recipients  = '[email protected]',
    @body = 'body',
    @subject = 'subj',
    --Parameters that refers to attached file
    @attach_query_result_as_file = 1, 
    @query_result_header = 0,
    @query_result_no_padding = 1,
    @query = 'select 1',
    @query_attachment_filename = 'test.csv'
revert


  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 सर्वर में TRY_CAST () कैसे काम करता है

  2. तालिका बनाएं में गैर-संकुल अनुक्रमणिका कैसे बनाएं?

  3. कैस्केड सभी बाल पंक्तियों और उनकी बाल पंक्तियों आदि के साथ एक पंक्ति की प्रतिलिपि बनाएँ

  4. एकीकृत सुरक्षा =असत्य

  5. एक स्क्रिप्ट का उपयोग करके एक्सेल शीट को अस्थायी तालिका में प्राप्त करें