SQL सर्वर केवल कुछ डेटाबेस बनाने, पुनर्स्थापित करने, हटाने के लिए अनुमतियाँ


17

MS SQL Server 2008 R2 पर, मुझे उपयोगकर्ता को बनाने की आवश्यकता है, जो पुनर्स्थापित कर सकता है, DBCC CHECKDB और फिर डेटाबेस को छोड़ सकता है। लेकिन वह सर्वर (सुरक्षा कारणों) पर निर्दिष्ट डेटाबेस तक पहुंचने या हटाने में सक्षम नहीं होना चाहिए। क्या यह सेटअप संभव है?


आप यहाँ कुछ संकेत प्राप्त कर सकते हैं: toadworld.com/platforms/sql-server/w/wiki/…
dezso

जवाबों:


27

हाँ यह एक दो अनुमतियों के माध्यम से संभव है।

पहला - एक डेटाबेस बनाने के लिए - आपको सर्वर स्तर की अनुमति देने की आवश्यकता होगी Create Any Database। यह अनुमति सिर्फ वही लगती है - जो डेटाबेस बनाने की शक्ति है। ध्यान दें कि यह लॉगिन करने के लिए dbcreator की निश्चित सर्वर भूमिका नहीं दे रहा है, क्योंकि यह निश्चित सर्वर भूमिका किसी भी डेटाबेस पर परिवर्तन / हटाने की अनुमति देता है। Create Any Databaseलॉगिन की अनुमति देता है कि वे केवल डेटाबेस पर ही शक्ति रखते हैं। यह भी बहाल करने की क्षमता देगा।

(इसलिए " केवल कोई भी डेटाबेस बनाएं" केवल - आप एक नया डेटाबेस बनाने की क्षमता दे रहे हैं, लेकिन किसी भी डेटाबेस को ड्रॉप करने या बदलने की क्षमता से बचें जो आपको dbcreator फिक्स्ड सर्वर रोल का उपयोग करके प्राप्त होगा)

इसे "कोई भी डेटाबेस बनाएँ" अनुमति देने के लिए -

use [master]
GO
GRANT CREATE ANY DATABASE TO [LoginName]
GO

DBCC CHECKDBडेटाबेस को चलाने और छोड़ने की क्षमता के लिए - निश्चित डेटाबेस भूमिका db_owner पर्याप्त है। यह आप सभी से अनुरोध करता है कि आप क्या कर रहे हैं। कृपया ध्यान दें: आप इस उपयोगकर्ता को चयन करने, हटाने, काट-छाँट करने, अद्यतन करने और सम्मिलित करने की क्षमता प्रदान कर रहे हैं db_owner। मुझे ऐसा लगता है जैसे sysadminडेटाबेस में।

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

ऐसा करने के लिए आप पहले एक डेटाबेस उपयोगकर्ता के लिए लॉगिन मैप करेंगे:

USE [DatabaseName]
GO
CREATE USER [UserName] FOR LOGIN [LoginName] 
GO

और फिर उस उपयोगकर्ता को db_ownerभूमिका में जोड़ें (SQL सर्वर 2012 में और उस पर काम करता है):

ALTER ROLE [db_owner] ADD MEMBER [frank]
GO

SQL सर्वर 2008 के लिए आपको सिस्टम सदस्य के रूप में एक टिप्पणीकार के रूप में भूमिका सदस्य जोड़ने के लिए सही तरीके से बताया गया है:

EXEC sp_addrolemember 'db_owner', 'frank';

आप यह सब GUI के माध्यम से भी कर सकते हैं। उदाहरण के स्तर पर आप SSMS में सुरक्षा फ़ोल्डर के माध्यम से लॉगिन जानकारी: लॉगिन पर राइट क्लिक करें -> गुण -> Securables। डेटाबेस स्तर के लिए, आप इसे डेटाबेस स्तर पर सुरक्षा फ़ोल्डर के माध्यम से करेंगे: राइट क्लिक करें और नए उपयोगकर्ता का चयन करें -> सर्वर लॉगिन की अपनी सूची से उपयोगकर्ता के लिए लॉगिन का चयन करें / डेटाबेस उपयोगकर्ता को एक नाम दें -> पर जाएं भूमिका सदस्यता का चयन करने के लिए सदस्यता टैब।

SQL सर्वर की सहायता प्रणाली, पुस्तकें ऑनलाइन, अधिकांश अनुमतियों के प्रश्नों के लिए भी एक शानदार संसाधन है - यदि आप निर्धारित करते हैं कि आपको अन्य अनुमतियों को निर्दिष्ट करने की आवश्यकता है। आप जिस T-SQL कमांड को अनुमति देना चाहते हैं, उसके लिए बस एक खोज करें और लेख में उस कमांड के लिए आमतौर पर एक अनुमतियाँ अनुभाग होता है, जिससे आपको पता चलता है कि इस क्रिया को करने के लिए किन अनुमतियों की आवश्यकता है। आप एक उदाहरण के लिए DBCC CHECKDB के लेख को देख सकते हैं - लेख के नीचे 7/8 का तरीका अनुमतियाँ अनुभाग है।


3
मैं ALTER ROLE [db_owner] ADD MEMBER [frank]केवल SQL सर्वर 2012 से ही काम करना चाहूंगा । यदि आप SQL Server 2008 पर हैं, तो एक को SP के साथ जाना चाहिए: EXEC sp_addrolemember 'db_owner', 'frank';(Ref here and here )
superjos
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.