SQL जॉब स्टेप विभिन्न sql अकाउंट के रूप में चलता है


11

मैं उत्सुक हूं कि एक SQL नौकरी चरण कैसे स्थापित किया जाए जिसे एक अलग SQL लॉगिन खाते के रूप में निष्पादित किया जाए। ऐसा प्रतीत होता है कि मुझे एक नया प्रॉक्सी खाता स्थापित करने की आवश्यकता है जिसमें एक मौजूदा क्रेडेंशियल की आवश्यकता है। जब मैं एक क्रेडेंशियल बनाता हूं तो मेरा एकमात्र विकल्प विंडोज लॉगइन क्रेडेंशियल का उपयोग करना है।

मैं जिस काम को चलाने का प्रयास कर रहा हूं वह नीचे है। अन्य अतिरिक्त स्टेटमेंट हैं, लेकिन जब मैं SQL लॉगिन के रूप में चलाने के लिए काम के चरण को सेट करता हूं तो यह विफल हो जाता है।

insert into [dbo].[TableA]
SELECT 
       ss.[Ref_ID]
      ,mm.[studentID]
      ,mm.[studentPersonID]
      ,mm.[studentFirstname]
  FROM [dbo].[TableB] mm
  left outer join [dbo].[TableC] ss on ss.parentPersonID=mm.parentPersonID and mm.studentPersonID = ss.studentPersonID
  where ss.Ref_ID is not null;

जब यह SQL जॉब स्टेप के माध्यम से चलाया जाता है तो यह विफल हो जाता है।

Executed as user: an_admin_account. Access to the remote server is denied because the current security context is not trusted. [SQLSTATE 42000] (Error 15274).  The step failed.

मुझे यह स्पष्ट नहीं है कि जब यह सभी तालिकाएं स्थानीय db पर मौजूद होती हैं तो यह किसी दूरस्थ सर्वर तक पहुंचने का प्रयास क्यों कर रही है।


SQL जॉब स्टेप में पहले से ही SQL इंस्टेंस का कनेक्शन होता है। इसलिए आपको पासवर्ड के साथ एक नया कनेक्शन बनाने के बजाय मौजूदा सुरक्षा संदर्भ को बदलने की आवश्यकता है। यदि आप एक नया कनेक्शन बनाना चाहते हैं, तो आप एक sqlcmd कमांड, या PowerShell स्क्रिप्ट का उपयोग कर सकते हैं, जो तब स्क्रिप्ट के भीतर मापदंडों के रूप में SQL लॉगिन और पासवर्ड का उपयोग कर सकता है। लेकिन आपको यह विचार करना चाहिए कि आपको क्या करने की आवश्यकता है, और क्या इसके संदर्भ में एक संग्रहीत खरीद पर्याप्त होगी।
रोब फार्ले

जवाबों:


15

यदि आप एक टी-एसक्यूएल जॉब स्टेप को कॉन्फ़िगर कर रहे हैं तो एडवांस्ड पेज पर जाएँ और अपनी पसंद के लॉगिन पर "उपयोगकर्ता के रूप में चलाएँ" को कॉन्फ़िगर करें। यहाँ छवि विवरण दर्ज करें

यदि आप पॉवरशेल जैसे अन्य जॉब स्टेप प्रकारों के साथ काम कर रहे हैं तो इसके लिए एक प्रॉक्सी खाते को कॉन्फ़िगर करना होगा।


मैंने यह कोशिश की है, लेकिन अब यह कहते हुए काम विफल हो जाता है कि "दूरस्थ सर्वर तक पहुंच से इनकार किया जाता है क्योंकि वर्तमान सुरक्षा संदर्भ पर भरोसा नहीं किया जाता है"। हालाँकि, यदि मैं उपयोगकर्ता के रूप में लॉग इन करते समय स्क्रिप्ट चलाता हूँ, तो यह इसे ठीक चलाने में सक्षम है। क्वेरी में लिंक सर्वर नहीं है इसलिए मुझे समझ नहीं आ रहा है कि यह रिमोट सर्वर की बात क्यों कर रहा है। कोई विचार?
ज्योफ दाविद

यदि आप अपने प्रश्न को जोड़ सकते हैं कि नौकरी क्या करने की कोशिश कर रही है और सटीक त्रुटि हमें आपको समाधान के लिए इंगित करेगी।

मेरे मामले में इसने सेटिंग की अनदेखी की। SQL 2012 का उपयोग करना।
मिगुएल Sv

1

EXECUTE ASप्रारंभ में उपयोग करें , या एक संग्रहीत प्रक्रिया बनाएं जो किसी विशेष संदर्भ में निष्पादित होती है।


यह खराब हो सकता है। यदि आप एक प्रतिबंधित उपयोगकर्ता के साथ संग्रहीत कार्यविधि को कॉल करना चाहते हैं, तो यह sysadmin (या नौकरी के मालिक) विशेषाधिकारों के लिए कभी भी वापस नहीं आ सकता है। समाधान कुकी का उपयोग करना होगा।
जेन्स डब्ल्यू।

EXECUTE AS विकल्प का उपयोग करके बनाई गई एक संग्रहीत प्रक्रिया विशेषाधिकार वृद्धि को नियंत्रित करेगी, और किसी को इसके माध्यम से भाग बदलने की अनुमति नहीं देगी। यदि कोई संग्रहित खरीद उपलब्ध नहीं है, तो एक अलग लॉगिन लगाने से यह स्क्रिप्ट के आरंभ में EXECUTE AS की तरह ही चाल चलेगी।
रोब फार्ले
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.