SQL सर्वर - संपूर्ण स्कीमा बनाम ऑब्जेक्ट को अनुमति देना?


25

जब मैं SQL Sever में डेटाबेस परमिशन मैनेजमेंट की दुनिया में आता हूं, तो मैं बहुत हरा हूं।

आइए एक उदाहरण को सरल रखें।

कहते हैं कि खाता 'व्यवस्थापक' स्कीमा ए, बी और सी का मालिक है।

एक अन्य खाता 'मिनियन' जिसे आप स्कीमा ए, बी, और सी के तहत बनाए गए किसी भी ऑब्जेक्ट (तालिका / दृश्य) पर पूर्ण अधिकार (अपडेट / डिलीट / इंसर्ट / सलेक्ट / चेंज) करना चाहते हैं।

क्या यह संभव है? या क्या आपको हर बार इन स्कीमाओं के तहत एक टेबल स्टेटमेंट / व्यू को जोड़ना है? (मुझे थोड़ा मूर्खतापूर्ण लगता है)।

जवाबों:


36

आप GRANTस्कीमा अनुमतियाँ जो मौजूदा सब कुछ के लिए प्रभावी हैं और सब कुछ जो उस स्कीमा में मौजूद होगा

अनुदान योजनाएँ अनुमतियाँ

GRANT SELECT, INSERT, UPDATE, DELETE ON SCHEMA :: <schema> TO <user>;

इसके अलावा, यदि आप उस स्कीमा के भीतर किसी निश्चित वस्तु पर अनुमति से इनकार करना चाहते हैं, तो आप कर सकते हैं।

इनकार करने वाली वस्तु अनुमतियाँ

DENY INSERT ON OBJECT::<schema>.<object> TO <user>;

1
यदि स्कीमा या उपयोगकर्ता नाम में विशेष वर्ण हैं, तो वर्ग कोष्ठक का भी उपयोग करें। जैसे.... SCHEMA :: [schema] TO [company-name/joshua.duxbury]
जोशुआ डक्सबरी

Azure में काम नहीं करता, किसी भी विचार क्यों? (कमांड काम करते हैं, लेकिन एसएसएमएस ऊपर आता है और कहता है "आप डीबी के मालिक नहीं हैं .. ब्ला ब्ला ब्ला। आप टेबल को बचाने में सक्षम नहीं हो सकते हैं" और निश्चित रूप से पर्याप्त है, आप डेटाबेस के लिए सभी नहीं कर सकते हैं (अनुमतियाँ 'डेटाबेस', '<db name>', TheUserId, 'Create Table', और 'GRANT' का state_desc दिखाता है) क्या कुछ और जादू की ज़रूरत है? या Azure केवल Dbo द्वारा उपयोग योग्य है?
Traderhut Games

13

थोड़ा और सरल करने के लिए, आप उस कार्य को करने के लिए भूमिकाओं का उपयोग कर सकते हैं जिसे आप खोज रहे हैं।

एक बार जब आप भूमिका को अनुमति देते हैं, तो आप उपयोगकर्ताओं को भूमिका में जोड़ सकते हैं। इस तरह आपको अलग-अलग उपयोगकर्ताओं के लिए अनुमतियाँ प्रबंधित करने की आवश्यकता नहीं है। उपयोगकर्ताओं को भूमिका के लिए दी गई अनुमतियाँ विरासत में मिली हैं।

नीचे आपको आरंभ करने के लिए एक उदाहरण दिया गया है:

 -- Create the database role
CREATE ROLE TableSelector AUTHORIZATION [dbo]
GO
 ---- Grant access rights to a specific schema in the database
GRANT 
      SELECT, INSERT, UPDATE, DELETE, ALTER 

ON SCHEMA::dbo
      TO TableSelector 
GO

-- Add an existing user to the new role created 
EXEC sp_addrolemember 'TableSelector', 'MyDBUser'
GO

-- Revoke access rights on a schema from a role 
DENY ALTER  -- you can customize here ...
ON SCHEMA::dbo
      TO TableSelector 
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.