9

मैंने SQL Server 2008 R2 में डेटाबेस बनाया है और इसके लिए डेटाबेस प्रोजेक्ट बनाने के लिए विजुअल स्टूडियो 2010 अल्टीमेट का उपयोग कर रहा हूं।विजुअल स्टूडियो डाटाबेस प्रोजेक्ट में उपयोगकर्ताओं और लॉग इन को कैसे संभालें?

मैंने इस MSDN walkthrough के आधार पर अपने पर्यावरण का प्रतिनिधित्व करने के लिए एक SQL सर्वर प्रोजेक्ट और डेटाबेस प्रोजेक्ट बनाया है। दोनों परियोजनाओं के लिए स्कीमा तुलना अपेक्षा के अनुसार काम करती है और मैं प्रोजेक्ट में सभी परिवर्तन सर्वर को दोहराने में सक्षम हूं।

हालांकि, ऐसा लगता है कि लॉग इन, उपयोगकर्ता/लॉगिन मैपिंग, स्थानीय सेवा खाते (जैसे एनटी सेवा \ MSSQL $ SQLEXPRESS2008) आदि जैसे कुछ पर्यावरण विशिष्ट कॉन्फ़िगरेशन आयात किए गए हैं, ऐसा लगता है क्योंकि यह इंप्रेशन यह डेटाबेस था परियोजना को किसी अन्य सर्वर पर तैनात किया जा सकता है और उन पर्यावरण विशिष्ट विवरण अलग-अलग हो सकते हैं। उदाहरण के लिए देव, क्यूए और प्रोड के बीच नामित उदाहरण अलग-अलग हो सकते हैं। उपयोगकर्ताओं को विभिन्न लॉगिन के लिए मैप किया जा सकता है।

क्या मैं इसे ठीक से कर रहा हूं या क्या मुझे डेटाबेस प्रोजेक्ट को सभी वातावरणों में पोर्टेबल बनाने के लिए अतिरिक्त कदम उठाने चाहिए?

मेरा लक्ष्य

  • तैनाती स्कीमा परिवर्तन ऐसी इकाई परीक्षण करने के लिए परिवर्तन स्क्रिप्ट
  • टाई पैदा करने पर एक डिस्पोजेबल परीक्षण वातावरण बनाने के लिए के रूप में संस्करण नियंत्रण में

    1. कब्जा स्कीमा को इस परियोजना का उपयोग करने के लिए है उड़ना।
  • उत्तर

    7

    हमें पहले इसके साथ गड़बड़ करनी पड़ी है और पर्यावरण/कॉन्फ़िगरेशन के नाम वाले चर के आधार पर अनुमतियों को संभालने के लिए पोस्ट-परिनियोजन स्क्रिप्ट बनाने के जेमी थॉम्पसन के विचार का उपयोग करके समाप्त हो गया है। आप लेख यहां पा सकते हैं: http://sqlblog.com/blogs/jamie_thomson/archive/2010/07/21/a-strategy-for-managing-security-for-different-environments-using-the-database-development-tools-in-visual-studio-2010.aspx

    मैं भी अनुमतियों के पटकथा को संभालने के लिए एक पटकथा लिखी: एक साथ

    SELECT 
    state_desc + ' ' + permission_name + 
    ' on ['+ ss.name + '].[' + so.name + '] 
    to [' + sdpr.name + ']' 
    COLLATE LATIN1_General_CI_AS as [Permissions T-SQL] 
    FROM SYS.DATABASE_PERMISSIONS AS sdp 
    JOIN sys.objects AS so 
        ON sdp.major_id = so.OBJECT_ID 
    JOIN SYS.SCHEMAS AS ss 
        ON so.SCHEMA_ID = ss.SCHEMA_ID 
    JOIN SYS.DATABASE_PRINCIPALS AS sdpr 
        ON sdp.grantee_principal_id = sdpr.principal_id 
    
    UNION 
    
    SELECT 
    state_desc + ' ' + permission_name + 
    ' on Schema::['+ ss.name + '] 
    to [' + sdpr.name + ']' 
    COLLATE LATIN1_General_CI_AS as [Permissions T-SQL] 
    FROM SYS.DATABASE_PERMISSIONS AS sdp 
    JOIN SYS.SCHEMAS AS ss 
        ON sdp.major_id = ss.SCHEMA_ID 
        AND sdp.class_desc = 'Schema' 
    JOIN SYS.DATABASE_PRINCIPALS AS sdpr 
        ON sdp.grantee_principal_id = sdpr.principal_id 
    order by [Permissions T-SQL] 
    GO 
    

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

    +0

    क्या यह अभी भी SQL सर्वर और विजुअल स्टूडियो के नए संस्करणों के लिए सबसे अच्छा समाधान है? वीएस2015 पर इसे संभालने का सबसे अच्छा तरीका जानने का प्रयास कर रहा है लेकिन कुछ नया नहीं देख रहा है। – ngneema

    +1

    मैंने ऐसा करने के तरीकों के बारे में कुछ नया नहीं देखा है, हालांकि विभिन्न ऑब्जेक्ट प्रकारों को अनदेखा करने के लिए VS2015 में और अधिक बारीक सेटिंग्स हैं। –

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