सभी तालिकाओं तक पढ़ने की अनुमति देने के लिए डेटाबेस भूमिका बनाएं; कुछ के लिए पहुँच लिखें


9

हमारे पास 1000 से अधिक तालिकाओं वाला एक डेटाबेस है। मुझे एक भूमिका बनाने की आवश्यकता है जो केवल सभी तालिकाओं पर पढ़ने की अनुमति देती है, साथ ही दो विशिष्ट तालिकाओं तक पहुंच भी लिखती है।

मैं डेटाबेस भूमिकाओं के साथ गड़बड़ कर रहा था, लेकिन जब भी मैं तालिकाओं को जोड़ने के लिए गया, तो मुझे सभी 1000 का चयन करना पड़ा ... क्या ऐसा करने का एक बेहतर तरीका है?


यह वास्तव में सबसे सरल तरीका हो सकता है ... क्या स्क्रिप्ट का एक तरीका है? जब भी हम इनमें से किसी एक डेटाबेस को रिफ्रेश करते हैं, तो मुझे स्क्रिप्ट का एक सेट रखने की आवश्यकता होती है, मैं सभी सेटिंग तुरंत वापस पा सकता हूं।
वेस

जवाबों:


9

स्कीमा पर अनुमतियाँ प्रदान करना (जैसे dbo) उस स्कीमा में सभी वस्तुओं के लिए झरना होगा। व्यक्तिगत अपवादों के लिए आप स्पष्ट रूप से उन लोगों को सूचीबद्ध कर सकते हैं:

GRANT SELECT ON SCHEMA::dbo TO [role];
GO

GRANT INSERT, UPDATE --, DELETE
  ON dbo.table_they_can_write_to TO [role];

DENY SELECT ON dbo.table_they_cannot_read TO [role];

3
काफी आसान। खुशी है कि हमारे पास इस तरह का एक समुदाय है।
वेस

1

इसे इस्तेमाल करे :

EXEC sp_MSForEachTable 'GRANT INSERT, UPDATE ON ? to [ROLE]'

3
FYI करें यह लिखता है, लेकिन सभी तालिकाओं तक कोई पढ़ने की पहुंच नहीं है, और स्कीमा को भी पूरी तरह से अनदेखा करता है। इसके अलावा sp_MSForEachTableयह अनिर्दिष्ट, असमर्थित है, और संभवतः उसी लंघन मुद्दों सेsp_MSForEachDB ग्रस्त है
हारून बर्ट्रेंड
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.