9

SQL Server 2008 R2'de bir veritabanı oluşturdum ve bunun için bir veritabanı projesi oluşturmak üzere Visual Studio 2010 Ultimate kullanıyorum.Visual Studio Veritabanı Projesinde kullanıcı ve oturum açma nasıl kullanılır?

Çevremdeki ortamı temsil etmek için hem SQL Server projesi hem de veritabanı projesi oluşturdum MSDN walkthrough. Her iki proje için şema karşılaştırmaları beklendiği gibi çalışır ve tüm değişiklikleri sunucuyu projeye çoğaltabilirim. Ancak, oturum açma, kullanıcı/oturum açma eşlemesi, yerel hizmet hesapları (örn. NT SERVICE \ MSSQL $ SQLEXPRESS2008), vb. Gibi bazı ortamlara özgü yapılandırmalar içe aktarılmış gibi görünüyor. Proje başka bir sunucuya dağıtılabilir ve bu ortamlara özgü ayrıntılar farklı olabilir. Örneğin, adlandırılmış örnekler Dev, QA ve Prod arasında farklı olabilir. Kullanıcılar farklı girişlere eşlenebilir.

Bunu doğru şekilde yapıyor muyum yoksa veritabanı projesini tüm ortamlara taşınabilir hale getirmek için fazladan adımlar atmalı mıyım?

Amacım

  • dağıtma şema değişiklikleri böyle bir atılabilir bir test ortamı yaratmak için birim testine değişiklik komut dosyalarını
  • kravat üreterek olarak sürüm kontrolü

    1. Yakalama şemaya bu projeyi yararlanmaktır uçarlar.
  • cevap

    7

    Biz önce bu uğraşmak zorunda ve çevre/yapılandırmanın adını içeren bir değişken dayalı izinleri uygulamayı dağıtım sonrası komut dosyaları oluşturma Jamie Thompson'un fikrini kullanarak sona erdi ettik. Burada makaleye bulabilirsiniz: 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

    Ben de izin komut dosyası işlemek için bir komut dosyası yazdı: Birlikte

    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 
    

    , G/kullanıcıları baştan yaratacak komut dosyalarını ve klasörleri sonrası dağıtmak içine izinlerini ayarlamak çevreye göre roller/izinler. Hangi bölümün çalışacağını anlamak için geri kalan kısımdan geçen ana dağıtım bölümünden "sarmalayıcı" komut dosyası diyoruz.

    +0

    Bu hala SQL Server ve Visual Studio'nun yeni sürümleri için en iyi çözüm mü? Şu anda VS2015 üzerinde işlemek için en iyi yolu bulmaya çalışıyorum ama yeni bir şey görmüyorum. – ngneema

    +1

    VS2015'te farklı nesne türlerini yok saymak için daha ayrıntılı ayarlar olsa da, bunu yapmanın yolları hakkında yeni bir şey görmedim. –

    İlgili konular