कृपया sysadmin
पर एक लॉगिन जोड़ें इस त्रुटि को दूर करने के लिए निश्चित सर्वर भूमिका जोड़ें। यह बिल्कुल जरूरी नहीं है!
स्वीकार्य उत्तर गलत है, क्योंकि यह काम नहीं करता है (ऐसा करता है), लेकिन क्योंकि लॉग इन करने के लिए पूरी तरह से तत्काल इंस्टॉलेशन पर पूर्ण नियंत्रण देने की आवश्यकता नहीं है, केवल कुछ ऐसा करने के लिए जो एक विशिष्ट अनुमति है । आप एक विशेष रूप से किसी विशेष शेयर या फ़ोल्डर पर अनुमति हटाने के उद्देश्य के लिए एक विंडोज व्यवस्थापक को एक डोमेन व्यवस्थापक नहीं बनायेंगे।
स्पष्ट होने के लिए, यह पोस्टर की गलती नहीं है क्योंकि उन्होंने एमएसडीएन दस्तावेज़ों को सही ढंग से उद्धृत किया है। समस्या यह है कि CREATE ASSEMBLY
के लिए एमएसडीएन दस्तावेज गलत था। दुर्भाग्यवश, documentation for SQL Server 2008 R2 ने कहा कि लॉगिन sysadmin
सर्वर रोल में होना था। हालांकि, it has since been corrected राज्य के लिए:
If PERMISSION_SET = UNSAFE is specified, requires UNSAFE ASSEMBLY permission on the server.
यह अनुमति UNSAFE ASSEMBLY
, सटीक अनुमति त्रुटि संदेश में कहा गया है:
UNSAFE ASSEMBLY permission was denied on object 'server', database 'master'
अर्थ, की आवश्यकता होती है निम्नलिखित (एक बार) करने के लिए :
USE [master];
GRANT UNSAFE ASSEMBLY TO [AD_domain_name\windows_login_name]; -- for Windows Logins
या:
USE [master];
GRANT UNSAFE ASSEMBLY TO [sql_login_name]; -- for SQL Server Logins
[master]
डेटाबेस में होने की आवश्यकता यह है कि यह अनुमति सर्वर-स्तर है, डेटाबेस-स्तर नहीं, अनुमति जो लॉगिन्स (जो सर्वर-स्तर पर मौजूद है) पर लागू होने की आवश्यकता है, और उपयोगकर्ता नहीं (जो डाटाबेस-स्तर पर मौजूद है)।
और यह कारण है कि त्रुटि संदेश का संदर्भ object 'server'
है और database 'master'
(क्योंकि यह एक सर्वर-स्तर अनुमति है) (क्योंकि लॉगिन [master]
डाटाबेस में मौजूद हैं और जब क्वेरी के लिए वर्तमान डाटाबेस [master]
पर सेट है केवल संशोधित किया जा सकता) ।
मैंने इसे एक लॉगिन के साथ परीक्षण किया है जो WITH PERMISSION_SET = UNSAFE
के रूप में चिह्नित असेंबली को लोड करने का प्रयास करते समय प्रश्न में दिखाए गए त्रुटि संदेश (यानी Msg 300
) प्राप्त करेगा। मैंने तब UNSAFE ASSEMBLY
अनुमति दी और लॉगिन UNSAFE
असेंबली लोड करने में सक्षम था; नहीं sysadmin
सदस्यता की आवश्यकता थी (या यहां तक कि प्रयास किया गया)। मैंने इसका परीक्षण किया: एसक्यूएल सर्वर 2005 एसपी 4, एसक्यूएल सर्वर 2008 आर 2 आरटीएम, और एसक्यूएल सर्वर 2012 एसपी 3।
इससे संकेत मिलेगा कि आप 'मास्टर' डेटाबेस में असेंबली जोड़ रहे हैं। क्या ये सही है? –
क्या लॉगिन आप 'sysadmin' भूमिका के सदस्य का उपयोग करते हैं? – a1ex07
@ नील नाइट: यही समस्या है, मुझे नहीं पता कि यह "डेटाबेस" मास्टर क्यों कहता है। मेरे पास 'mydatabase] उपयोग है क्योंकि मैं' mydatabase ' – MStodd