एक डेटाबेस उपयोगकर्ता के लिए कई सर्वर लॉगिन का मानचित्रण


11

यह एक बेवकूफी भरा सवाल लगता है लेकिन कुछ शोधों के बावजूद मुझे केवल इस बारे में कोई जानकारी नहीं मिल पाई (संभवतः गलत शब्दावली का उपयोग करने के कारण)।

क्या एकल डेटाबेस उपयोगकर्ता (जिसमें किसी डेटाबेस के सदस्य होने के कारण अनुमतियाँ हैं) को एकाधिक सर्वर लॉगिन (एसक्यूएल सर्वर प्रमाणीकरण) लॉग करना संभव है?

मेरे पास दर्जनों sql logins (sql सर्वर प्रमाणीकरण) हैं जिन्हें एक केंद्रीय डेटाबेस से एक सेटिंग को पढ़ने की आवश्यकता है और मैं इन सभी लॉगिन को लक्ष्य डेटाबेस में एक एकल DB उपयोगकर्ता के बजाय प्रत्येक लॉगिन के लिए स्वयं का DB उपयोगकर्ता बनाने के लिए मैप करना होगा।

यदि हाँ, तो सही T-SQL सिंटैक्स क्या होगा?


जब आप कहते हैं "सर्वर लॉगऑन" क्या आपका मतलब है विंडोज अकाउंट या SQL सर्वर अकाउंट?
फिल सुमनेर

मैं SQL सर्वर खातों के बारे में बात कर रहा हूँ। स्पष्ट करने के लिए प्रश्न को संपादित करेंगे
लेपफ्रॉग

आप कैसे बनाते हैं ROLEऔर फिर उपयोगकर्ताओं को भूमिका में जोड़ते हैं। इस तरह आप भूमिका को सिर्फ अनुमति देते हैं। यह आपको बेहतर तरीके से सुरक्षा का प्रबंधन करने में मदद करेगा। इसके अलावा, sql सर्वर संस्करण क्या है - 2008R2, 2012?
परिजनों शाह

जवाबों:


19

पहले शब्दावली का पक्का करने के लिए। एक लॉगिन एक उदाहरण स्तर सुरक्षा प्रिंसिपल ( sys.server_principals) है और एक उपयोगकर्ता एक डेटाबेस स्तर सुरक्षा प्रिंसिपल ( sys.database_principals) है। वे एक SID (सुरक्षा पहचानकर्ता) द्वारा एक साथ जुड़ जाते हैं। यदि आप ऊपर दिए गए सिस्टम दृश्यों में देखते हैं, तो आप देख सकते हैं कि वे SID द्वारा 1: 1 प्रारूप में एक साथ कैसे शामिल होते हैं। यह एक डेटाबेस में 1 उपयोगकर्ता के लिए 1 लॉगिन है। एक लॉगिन में कई उपयोगकर्ता हो सकते हैं लेकिन वे अलग-अलग डेटाबेस में होने चाहिए।

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

CREATE USER [UserName] FROM LOGIN [LoginName]

वहां से आप अपने सभी उपयोगकर्ताओं को एक (या एकाधिक) भूमिका में डाल सकते हैं। एक भूमिका एक कंटेनर है जिसमें अनुमतियाँ हैं और उन अनुमतियों को प्रत्येक उपयोगकर्ता (डेटाबेस भूमिकाओं के लिए) या लॉगिन (उदाहरण के लिए भूमिकाओं के लिए) साझा करता है। एक अंतर्निहित डेटाबेस भूमिका होती है, जिसे डेटाबेस में db_datareaderहर तालिका और दृश्य को पढ़ने की सुविधा मिलती है। आप अपने सभी उपयोगकर्ताओं को उस भूमिका में जोड़ सकते हैं। हालाँकि, एक बेहतर विचार एक नई भूमिका का निर्माण और भूमिका में जोड़ देगा db_datareader। फिर अपने सभी उपयोगकर्ताओं को नई भूमिका में जोड़ें। यहाँ लाभ यह है कि यदि आप समूह में अतिरिक्त अनुमतियाँ जोड़ना चाहते हैं तो आप केवल भूमिका पर अनुमतियाँ बदलकर कर सकते हैं।

द्वारा भूमिका बनाएँ:

CREATE ROLE RoleName

उपयोगकर्ता को एक भूमिका में जोड़ें (या किसी अन्य के लिए एक भूमिका)

EXEC sp_addrolemember 'RoleName','UserName'

या यदि आप 2012 या उच्चतर में हैं

ALTER ROLE [RoleName] ADD MEMBER [UserName]

विस्तृत खोज के लिए और पृष्ठभूमि की जानकारी केनेथ को प्रदान करने के लिए धन्यवाद, जो मैं स्पष्ट नहीं था That's 1 Login to 1 User in a database
लेपफ्रॉग
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.