2011-01-25 9 views
7

मैं कोडिंग परीक्षणों के लिए तैयार डेवलपर साक्षात्कार के लिए एक लैपटॉप स्थापित कर रहा हूं। मैं प्रत्येक उम्मीदवार के लिए डेटाबेस बनाना चाहता हूं, लेकिन साक्षात्कार के पहले ही। मेरी तैयारी इस तरह जाती है:एक SQL सर्वर डेटाबेस सेटअप करें जो केवल कुछ उपयोगकर्ताओं के लिए दृश्यमान है

  1. व्यवस्थापक के रूप में लॉगऑन।
  2. प्रत्येक उम्मीदवार के लिए एक स्थानीय विंडोज उपयोगकर्ता बनाएँ।
  3. प्रत्येक उम्मीदवार के लिए SQL सर्वर के स्थानीय डिफ़ॉल्ट उदाहरण पर डेटाबेस बनाएं (डेटाबेस नाम में उनके नाम के साथ)।

जैसे कि जब मैं प्रत्येक उम्मीदवार के रूप में विंडोज़ पर लॉगऑन करता हूं, यदि वे एसएसएमएस खोलते हैं तो वे ऑब्जेक्ट एक्सप्लोरर में केवल अपना डेटाबेस देख सकते हैं।

मैं इसे इस तरह से करना चाहता हूं, क्योंकि पिछली उम्मीदवार के डेटाबेस को बैकअप/अलग करने के लिए साक्षात्कार के बीच अक्सर पर्याप्त समय नहीं होता है और अगले उम्मीदवार के डेटाबेस को बनाते हैं (मशीन धीमी है, इसलिए लॉग ऑन/ऑन फिर आदि समय लगता है)।

क्या यह संभव है, और यदि हां, तो कैसे?

अग्रिम में बहुत धन्यवाद।

उत्तर

5

ऐसा लगता है कि SQL Server 2005+ में कोई विकल्प है जो आपकी आवश्यकताओं को यहां समायोजित कर सकता है। ऐसा लगता है जैसे आपकी आवश्यकता यह है कि उपयोगकर्ता ऑब्जेक्ट एक्सप्लोरर में अन्य डेटाबेस देखता है।

How To Hide Databases in SQL ServerVIEW ANY DATABASE अनुमति को हाइलाइट करता है। यह इस स्थिति में उपयोगी हो सकता है जहां डेटाबेस एक्स को विंडोज उपयोगकर्ता एक्स के अलावा अन्य उपयोगकर्ताओं से छुपाया जाना चाहिए।

This MSDN forum thread (see the bottom-most posts) बताता है कि उपयोगकर्ता को दृश्य डेटाबेस को अस्वीकार करने और प्राधिकरण देने का एक संयोजन एक संभावित समाधान है।

मैंने इसे SQL सर्वर 2008 मशीन पर दोहराया है, लेकिन इस त्वरित परीक्षण में SQL सर्वर प्रमाणीकरण का उपयोग किया है। यह वर्णन के अनुसार काम करता है: सभी डीबी लॉगिन से छिपाए गए थे, नीचे निर्दिष्ट एक को बचाएं।

USE <customersdatabase> 

ALTER AUTHORIZATION ON DATABASE::<customerdatabase> to <customerlogin> 

USE MASTER 

DENY VIEW ANY DATABASE TO <customerlogin> 
0

एसएसएमएस में लॉग इन करें।

डेटाबेस पर क्लिक करें, आपके द्वारा बनाए गए डेटाबेस पर क्लिक करें।

सुरक्षा का विस्तार करें, उपयोगकर्ताओं पर क्लिक करें, और इस डेटाबेस में विंडोज़ लॉगिन जोड़ें। सुनिश्चित करें कि आप इसे सर्वर पर छेद के रूप में नहीं जोड़ते हैं।

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

0

व्यक्तिगत रूप से मैं इसे थोड़ा अलग तरीके से करूँगा - मैं प्रत्येक उम्मीदवार के लिए एक अलग विंडोज खाता स्थापित नहीं करता, बल्कि मैं केवल एक विंडोज खाता का उपयोग करता हूं और प्रत्येक के लिए एसक्यूएल लॉगिन सेट करता हूं। p.campbell के उत्तर के अनुसार VIEW ANY DATABASE को रद्द करें, और उसके बाद प्रत्येक SQL लॉगिन को उपयोगकर्ता के रूप में अपने संबंधित डेटाबेस में जोड़ें।

इस तरह से आप प्रत्येक उम्मीदवार के रूप में मशीन लॉग इन कर सकते हैं, उन्हें केवल आपके द्वारा प्रदान की जाने वाली SQL लॉगिन जानकारी का उपयोग करके SQL इंस्टेंस से कनेक्ट करना है।

+0

हाँ लेकिन फिर मुझे एक अलग समस्या है - प्रत्येक उम्मीदवार विजुअल स्टूडियो खोलने और पिछले उम्मीदवारों की परियोजनाओं को उनके सामने दिखाई देता है। विभिन्न विंडोज लॉग इन इन को अलग करते हैं (और एनटीएफएस के साथ वे एक-दूसरे के दस्तावेज़ फ़ोल्डरों तक भी नहीं पहुंच सकते हैं)। –

+0

@Neil, यह एक अच्छा बिंदु है, लेकिन सरल बैच स्क्रिप्ट इसे ठीक कर सकती है। – slugster

+0

असल में मैं असहमत हूं। एक बैच स्क्रिप्ट यह सुनिश्चित करने में सक्षम नहीं होगी कि एमआरयू सूचियां और वीएस -2010 स्टार्ट पेज इत्यादि सभी "साफ" हैं और पिछले परियोजनाओं के संदर्भ में नहीं हैं। –

1

SQL सर्वर के साथ, आप डेटाबेस को अलग और संलग्न कर सकते हैं। तो आप इसे सामान्य और उम्मीदवारों के बीच में लॉग इन कर सकते हैं, बस पिछले उम्मीदवार डेटाबेस को अलग करें, और अगले को संलग्न करें।

पिछले उम्मीदवारों के साथ विजुअल स्टूडियो प्रोजेक्ट के साथ, आप इसे पासवर्ड से ज़िप कर सकते हैं।

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