SQL सर्वर (2008) के साथ, क्या आप स्कीमा के भीतर तालिका अनुमति प्रदान कर सकते हैं?


14

SQL Server 2008 में सुरक्षा के साथ काम करते हुए, मैं एक उपयोगकर्ता को TATE अनुमति प्रदान करने का प्रयास कर रहा हूं, लेकिन केवल एक विशिष्ट स्कीमा के भीतर। क्या डेटाबेस की अनुमति केवल डेटाबेस स्तर पर लागू होती है?

क्या मैं केवल स्कीमा के भीतर तालिका बनाने के लिए उपयोगकर्ता को सीमित कर सकता हूं?

मैंने कोशिश की:

USE [databasename]
GRANT CONTROL ON Schema :: [schemaname] TO [username]
GO

तथा

USE [databasename]
GRANT ALTER ON Schema :: [schemaname] TO [username]
GO

लेकिन, उपयोगकर्ता अभी भी लक्ष्य स्कीमा के भीतर एक तालिका बनाने में असमर्थ है। यह तब तक नहीं है जब तक कि मैं इसे नहीं चलाता, टोपी उपयोगकर्ता तालिका बना सकता है:

USE [databasename]
GRANT CREATE TABLE to [username]
GO

GRANT

डेटाबेस डेटाबेस अनुमतियाँ

जवाबों:


12

SQL Server 2008 की मदद के अनुसार:

डेटाबेस और तालिका में बनाई जा रही स्कीमा पर पूर्व अनुमति की आवश्यकता है।

मैंने अभी एक परीक्षण डेटाबेस में EXECUTE AS का उपयोग करके यह परीक्षण किया था, और मैं स्कीमा में एक तालिका बनाने में सक्षम था जिसमें ALTER अनुमति थी, लेकिन dbo स्कीमा में नहीं (जिसके लिए मैंने ALTER अनुमति नहीं दी थी)। तो जब तक आप स्कीमा पर ALTER अनुमति के साथ बहुत उदार नहीं हो गए हैं, यह ऐसा करने का तरीका होना चाहिए।


1
हां, अब मैं देख रहा हूं। भले ही उपयोगकर्ता के पास डेटाबेस स्तर "क्रिएट टेबल" अनुमति है, वह हमें स्कीमा में टेबल बनाने में असमर्थ है जहां कोई अन्य अनुमति नहीं दी गई है।
रयान डब्ल्यू

यह निश्चित रूप से दुर्भाग्यपूर्ण लगता है कि आपको इस परिदृश्य को सक्षम करने के लिए कंबल सृजन की अनुमति प्रदान करनी होगी।
13

6

एक विशिष्ट डेटाबेस में एक विशिष्ट उपयोगकर्ता के लिए तालिकाओं को बनाने की अनुमति देना न केवल क्रिएट टेबल अनुमतियों की आवश्यकता है, बल्कि स्कीमा, जैसे डीबीओ के लिए भी अनुमति की आवश्यकता है।

USE [databasename]
GRANT ALTER ON Schema :: [schemaname] TO [username]
GRANT CREATE TABLE TO [username]
GO

उदाहरण के लिए;

USE db_mydatabase
GRANT ALTER ON Schema :: DBO TO user_mydatabase
GRANT CREATE TABLE TO user_mydatabase
GO

1

2008 R2 में स्कीमा पर लागू अनुमतियों के प्रलेखन में इस तरह की अनुमति के बारे में कुछ भी नहीं है: http://msdn.microsoft.com/en-us/library/ms187940.aspx

इसलिए मैं निष्कर्ष निकालता हूं: नहीं, आप नहीं कर सकते, तालिका बनाएं केवल एक डेटाबेस स्तर पर नियंत्रित किया जा सकता है (यह सभी securables पर लागू होता है)।


धन्यवाद, मैं सहमत हूं, उस स्तर के बारे में कुछ भी नहीं है। जैसा कि @ db2 ने उल्लेख किया है, डेटाबेस स्तर "क्रिएट टेबल" अनुमति किसी उपयोगकर्ता को स्कीमा पर कोई अन्य अनुमति नहीं होने पर तालिका बनाने की अनुमति देने के लिए पर्याप्त नहीं है।
रयानडब्ल्यू 28:11

0

जरूर आप कर सकते हो। यदि आपके पास user1 है, तो इसके डिफ़ॉल्ट स्कीमा को user1 के रूप में भी परिभाषित करें। इस उपयोगकर्ता के लिए डेटाबेस अनुमतियों में सृजन तालिका प्रदान करें। बस। user1 केवल user1 स्कीमा के भीतर टेबल बना सकता है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.