2010-07-30 18 views
10

मेरे पास एक स्क्रिप्ट है जो डेटाबेस, संग्रहित प्रोसेस, विचार, टेबल, udf बनाता है। मैं उपयोगकर्ता 'user_1' बनाने के लिए एक स्क्रिप्ट शामिल करना चाहता हूं और डेटाबेस पर निष्पादन अनुमति देता हूं।टी-एसक्यूएल उपयोगकर्ता बनाते हैं और संग्रहित प्रक्रियाओं के लिए अनुमति पर निष्पादन प्रदान करते हैं

मैं सभी संग्रहीत procs

declare @permission varchar(max) 

select @permission = COALESCE(
    @permission + '; ' + 'Grant Execute on ' + name + ' user_1', 
    'Grant Execute on ' + name + ' user_1') 
from sysobjects where xtype in ('P') 

exec (@permission) 

लेकिन exec (@permission) काम नहीं करता है के लिए अनुदान कार्यकारी आदेश बनाने के लिए निम्नलिखित की कोशिश की। यह

';' के पास गलत वाक्यविन्यास देता है।

मैं इसे कैसे हल कर सकता हूं?

+0

तुम क्या करने की कोशिश की है? क्या आपने उपयोगकर्ता या अनुदान बनाने के लिए ऑनलाइन सहायता देखी थी? –

उत्तर

24

लॉगिन बनाएं: सर्वर स्तर लॉगिन बनाता है। फिर ... उपयोगकर्ता बनाएं: लॉगिन खाता आपके डेटाबेस से संलग्न करने देता है। फिर ... अनुदान निष्पादित करें: अनुदान आपके सभी डीबी में सभी एसपी और कार्यों के अधिकारों को निष्पादित करता है। यदि आप केवल विशिष्ट स्पैस के अधिकार देना चाहते हैं तो "xcz पर abcute पर अनुदान निष्पादित करें" का उपयोग करें।

Create login abacadaba with password='ABVDe12341234'; 
Create user abacadaba for login abacadaba; 
Grant Execute to abacadaba; 
+1

बस जो मैं खोज रहा था। धन्यवाद। एसक्यूएल दस्तावेज क्यों चलना मुश्किल है? –

2

आप की कोशिश की है:

CREATE LOGIN TestUser WITH PASSWORD = 'TopSecret' 
GRANT EXEC ON MyStoredProc TO TestUser 

आप भी "उपयोगकर्ता बनाएं" कर सकता है कि तुम क्या चाहते हो।

+0

मुझे सभी संग्रहित प्रोसेस निकालने और अनुमति देने के लिए एक स्क्रिप्ट चाहिए। – stackoverflowuser

+0

कृपया ध्यान दें, यदि उपयोगकर्ता नाम के पास कोई विशेष वर्ण या संख्या है, उदाहरण के लिए '123SPROCUSER' तो उपयोगकर्ता नाम को स्क्वायर ब्रैकेट से घिरा होना चाहिए जैसे कि [123SPROCUSER]' – Shrout1

0

मूल उपयोगकर्ता के रूप में बिल्कुल एक ही समस्या थी, लेकिन मेरे लिए यह TSQL में एम्बेडेड बुरा अक्षरों वाला था - मैं जो कुछ स्रोत इसे काट और से चिपकाया गया था से अनुमान लगा रहा हूँ।

वैसे भी आपके पास कितना सफेद स्थान है, इस पर निर्भर करता है कि शब्दों के बीच सफेद जगह हटाएं और नियमित रिक्त स्थान के साथ प्रतिस्थापित करें।

इस से पहले सभी अन्य उत्तर की कोशिश करो, यह काफी संभावना नहीं है - मैं सिर्फ यह जोड़ रहा के रूप में यह इतना TSQL की 2 पंक्तियाँ कि एक दूसरे के नीचे से ऊपर समान देखा/होने निराशा होती थी, लेकिन अलग अलग परिणाम संदेशों जब में हुई पर प्रकाश डाला और प्रबंधन स्टूडियो में रन ...

अद्यतन: बुरा पात्रों माइक्रोसॉफ्ट Lync से चिपकाया गया

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