2015-03-27 20 views
5

मेरे पास प्रॉक्सी उपयोगकर्ता है कि मैं ऐसी भूमिका में जोड़ने की कोशिश कर रहा हूं जो सभी संग्रहीत प्रक्रियाओं को निष्पादित कर सके। अन्य StackOverflow पदों का उपयोग करना, मैं मैं अभी भी इस त्रुटि मिल रही है, प्रति मेरी त्रुटि हैंडलिंग एक साथ इस स्क्रिप्टसंग्रहित प्रक्रियाओं को निष्पादित करने के लिए अनुदान भूमिका

USE abc 

Create ROLE db_exec 
go 

GRANT EXECUTE TO db_exec 
go 

EXEC sp_addrolemember 'db_exec', 'abc_user' 
go 

डाल करने के लिए सक्षम किया गया है जब मैं हालांकि मेरे संग्रहित प्रक्रियाओं को चलाने के लिए प्रयास करते हैं,।

ऑब्जेक्ट 'sp_OACreate', डेटाबेस 'mssqlsystemresource', स्कीमा 'sys' पर निष्कासित अनुमति अस्वीकार कर दी गई थी।

क्या मैं abc_user निष्पादित sp_OACreate जाने के लिए कर सकते हैं?

+2

* sp_OACreate: sysadmin निश्चित सर्वर रोल में सदस्यता –

+0

@AlexK आवश्यक है *।। मैंने उपयोगकर्ता को sysadmin में जोड़ा है और 'select is_srvrolemember (' sysadmin ',' abc_user ')' रिटर्न '1' के साथ सत्यापित किया है, लेकिन मुझे अभी भी वही त्रुटि मिल रही है, कोई विचार? – user3267755

+0

यह भी आवश्यक है कि ओले स्वचालन सक्षम हो, आप इस त्रुटि को भी उस उदाहरण में प्राप्त कर सकते हैं। अंत में ..... SQL सर्वर में ओले स्वचालन से बचने का प्रयास करें। यह एक डीबी सर्वर है, एक एपीपी सर्वर नहीं। – RThomas

उत्तर

5

sysadmin भूमिका में होने के अलावा, आप भी मास्टर डेटाबेस जहां उन प्रक्रियाओं वास्तव में रहते हैं

use master 
go 

grant exec on sp_OACreate to abc_user 
GO 

पर अनुमति निष्पादित आप चलाने के बाद कि आप निम्नलिखित है कि आप करने की अनुमति के साथ सत्यापित कर सकते हैं प्रदान करने की आवश्यकता प्रक्रिया निष्पादित

SELECT * 
FROM master.sys.database_permissions [dp] 
JOIN master.sys.system_objects [so] ON dp.major_id = so.object_id 
JOIN master.sys.sysusers [usr] ON 
    usr.uid = dp.grantee_principal_id AND usr.name = 'abc_user' 
WHERE permission_name = 'EXECUTE' AND so.name = 'sp_OACreate' 
+0

यह पूरी तरह से काम किया, धन्यवाद! – user3267755

0

जवाब दिया काम करता है, तथापि, हम आम तौर पर जब भी संभव हो को सिस्टम प्रशासक अनुमति किसी भी उपयोगकर्ता देना नहीं की कोशिश करो। इस मामले में मुझे sp_OACreate चलाने के लिए मिला है, आपको वास्तव में sysadmin भूमिका की आवश्यकता नहीं है।

मैं निम्नलिखित भाग गया:

use master 
grant exec on sp_OACreate to yourSecObject 
grant exec on sp_OADestroy to yourSecObject --Optional 
grant exec on sp_OAMethod to yourSecObject 

मेरी प्रयोजनों के लिए मैं दोनों बनाएँ और नष्ट आवश्यक उपयोगकर्ता तो एक सफाई चरण की आवश्यकता।

मुझे उम्मीद है कि यह किसी भी व्यक्ति को इन प्रक्रियाओं को चलाने की क्षमता देना चाहता है, लेकिन यह नहीं चाहता कि उपयोगकर्ता सर्वर पर अन्य सभी डेटाबेस तक पूर्ण डीबी पहुंच प्राप्त करे।

स्कॉट

संबंधित मुद्दे

 संबंधित मुद्दे