2012-03-20 10 views
14

मुझे लगता है कि उत्तर नहीं है, लेकिन मैं किसी को SQL सर्वर डेटाबेस तक पहुंच प्रदान करना चाहता हूं लेकिन मैं केवल वास्तव में उन्हें एक तालिका तक पहुंच बनाना चाहता हूं।SQL सर्वर: क्या आप केवल एक तालिका तक पहुंच सीमित कर सकते हैं

किसी को केवल एक डेटाबेस तक पहुंचने के लिए सीमित करना आसान है, लेकिन मुझे कोई जानकारी नहीं है कि मैं एक तालिका तक सीमित कर सकता हूं या नहीं।

मेरे विचार अन्य तालिका में समानार्थी के साथ एक और डेटाबेस बनाना था और फिर उस डेटाबेस तक पहुंच को सीमित करना था, लेकिन मुझे आश्चर्य हुआ कि कोई बेहतर तरीके से सोच सकता है या नहीं।

मुझे यह भी विश्वास नहीं है कि यह काम करेगा क्योंकि मुझे लगता है कि अनुमतियों का एक संघर्ष होगा।

आप

+7

यदि आप चुनते हैं, अपना लॉगिन बनाते हैं और बस अपनी तालिका –

उत्तर

20

धन्यवाद हां।

exec sp_msforeachtable "DENY SELECT ON '?' TO [username];" 
GO 

GRANT SELECT ON [schemaName].[tableName] to [username] 
Go 

है कि काम करता है, तो आप शायद roles और विज्ञापन समूहों का उपयोग कर के प्रबंध अनुमतियां बंद बेहतर होगा।

+0

बहुत बढ़िया, धन्यवाद। मैं इसे जाने दूंगा। –

3
GRANT SELECT ON [SchemaName].[TableName] to [UserName] 
+1

पर चयन अनुमति देते हैं तो आप लोगों को एक ही * कॉलम * तक पहुंच सकते हैं। यह शेष तालिकाओं की रक्षा कैसे करता है? –

+0

ऐसा नहीं है, यही कारण है कि उत्तर स्वीकार्य के रूप में चिह्नित नहीं किया गया था, जबकि स्वीकृत एक करता है। यकीन नहीं है कि क्या आप मुझे यह इंगित करने के लिए कह रहे हैं कि मैं इस जवाब के कुछ महीनों के बाद गलत था कि मैं लंबे समय से भूल गया था, या तो तरीकों से, उम्मीद है कि मेरी टिप्पणी में मदद मिलेगी। – kd7

+2

क्षमा करें इस प्रश्न को चैट में मेरे ध्यान में लाया गया था।जब मैंने टिप्पणी की तो मुझे वास्तव में एहसास नहीं हुआ कि सवाल कितना पुराना था। फिर भी, मुझे लगता है कि इसकी स्वीकृति स्थिति या वोट गिनती के बावजूद, मूल प्रश्न के संबंध में उत्तर के पहलुओं के प्रश्नों के सवाल के लिए मान्य है। बहुत से प्रश्नों में एक स्वीकार्य उत्तर नहीं है, और यह प्रश्न अभी भी यहां है क्योंकि उत्तर OP * और * भविष्य के पाठकों की सहायता के लिए हैं। जिनमें से कई लोग मान सकते हैं कि पृष्ठ पर कोई जवाब एक उत्तर है। –

0

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

2

निश्चित रूप से। GRANT आप जो अनुमति चाहते हैं।

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

समस्या यह है कि लोग आम तौर पर शुरुआत में बहुत व्यापक अनुमति देते हैं।

5

सभी तालिकाओं के माध्यम से लूपिंग और पहुंच से इनकार करने में समस्या होगी यदि आप एक नई तालिका जोड़ते हैं।

महत्वपूर्ण बात यह है कि उपयोगकर्ता को पूरे डेटाबेस में उपयोगकर्ता 'db_datareader' पहुंच नहीं देना है। यूआई का उपयोग करके आप लॉगिन के तहत उपयोगकर्ता मैपिंग टैब का उपयोग कर सकते हैं, आप उपयोगकर्ता को केवल 'सार्वजनिक' पहुंच के साथ बना सकते हैं। फिर आप डेटाबेस पर जा सकते हैं और उस उपयोगकर्ता को विशेष तालिका तक पहुंच का चयन कर सकते हैं (Securables टैब के तहत अजीब नामित "खोज" बटन पर क्लिक करके)।

यह दृष्टिकोण निश्चित रूप से स्क्रिप्ट के साथ भी काम करेगा।

-1

एक बेहतर दृष्टिकोण schema बनाने के लिए एक बेहतर दृष्टिकोण होगा, schema में proc बनाएं। फिर उपयोगकर्ता को EXECproc पर अनुमति दें। बस। आप उस schema में view बना सकते हैं और यह आपके बाद के बाद में हो सकता है।

-1

बेहतर तरीका उस विशिष्ट तालिका के लिए सुरक्षित बनाने योग्य है। आईटी आपको पूछेगा कि आप सुरक्षित होने के लिए क्या कर रहे हैं; टेबल, देखें, डेटाबेस। फिर आप उस तालिका से उस उपयोगकर्ता को सुरक्षित और बहिष्कृत करने के लिए विशिष्ट तालिका चुनते हैं।

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