2011-06-26 12 views
7

क्या SQL सर्वर (उदाहरण चुनें, डालें, आदि) में सब कुछ के लिए अनुमतियों से इनकार करना संभव है और संग्रहित प्रक्रियाओं के माध्यम से अस्थायी अनुमतियां देना संभव है। मैं एसक्यूएल डेटाबेस में डेटा तक पहुंचने के लिए केवल संग्रहीत प्रक्रियाओं का उपयोग करना चाहता हूं।एसक्यूएल सर्वर संग्रहीत प्रक्रियाओं और अनुमतियों

क्या यह संभव है या कोई और तरीका है?

उत्तर

6

यह एक अच्छा पैटर्न है जो मेरे SQL सर्वर का समर्थन करता है।

असल में, जिनके पास संग्रहित प्रक्रियाओं पर अनुमति है, उन्हें किसी भी तालिका अनुमतियों की आवश्यकता नहीं है, यदि proc और तालिकाओं में एक ही मालिक (डीबीओ आमतौर पर) होता है। यह कहा जाता है ownership chaining

नोट: टेबल पर अनुमतियाँ केवल इस स्थिति में चेक न किया जाए, तो स्पष्ट "अस्वीकार करें अनुमतियाँ" भी नजरअंदाज कर दिया जाएगा

ही दृश्यों पर लागू होता (अस्वीकार अलग करने के लिए "कोई अनुमति" है) , फ़ंक्शन इत्यादि (उदाहरण के लिए कॉलिंग टेबल, प्रो कॉलिंग व्यू, ...)

5

हाँ इस ownership chaining कहा जाता है, यदि आप proc करने की अनुमति निष्पादित देना उपयोगकर्ता proc निष्पादित करने में सक्षम हो जाएगा और यह काम, वह डेटा वापस

मिल जाएगा होगा अगर वह फिर से एक का चयन करने की कोशिश करता SSMS से तालिका यह काम नहीं करेगा (प्रदान कि वह डेटा पाठक या उच्चतर भूमिका में नहीं है)

कि गतिशील एसक्यूएल टूट जाता है ownership chaining ध्यान रखें, यदि आप संग्रहीत प्रक्रिया में गतिशील एसक्यूएल है, तो आप अतिरिक्त आवश्यकता होगी उस मामले में अनुमतियां

+3

"स्वामित्व श्रृंखला": http://msdn.microsoft.com/en-us/library/ms188676.aspx – gbn

+0

सही है, यही है मेरा मतलब...... – SQLMenace

1

यह न केवल संग्रहित प्रक्रियाओं के साथ काम करता है, बल्कि विचारों के साथ भी काम करता है।
सामान्य रूप से, आप अंतर्निहित तालिका (ओं) पर समान उपयोगकर्ता अनुमति देने के बिना, "उच्च-स्तरीय" ऑब्जेक्ट को दृश्य या स्पोक जैसे उपयोगकर्ता अनुमति भी दे सकते हैं।

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