Aracılığıyla paylaş


Birden Çok Ortam için Veritabanı Dağıtımlarını Özelleştirme

tarafından Jason Lee

Bu konuda, bir veritabanının özelliklerini dağıtım işleminin bir parçası olarak belirli hedef ortamlara nasıl uyarlandığı açıklanmaktadır.

Not

Bu konuda, MSBuild.exe ve VSDBCMD.exe kullanarak Visual Studio 2010 veritabanı projesi dağıttığınız varsayılır. Bu yaklaşımı neden seçebileceğiniz hakkında daha fazla bilgi için bkz. Enterprise'da Web Dağıtımı ve Veritabanı Projelerini Dağıtma.

Bir veritabanı projesini birden çok hedefe dağıttığınızda, genellikle her hedef ortamın veritabanı dağıtım özelliklerini özelleştirmek istersiniz. Örneğin, test ortamlarında genellikle her dağıtımda veritabanını yeniden oluştururken, hazırlama veya üretim ortamlarında verilerinizi korumak için artımlı güncelleştirmeler yapma olasılığınız çok daha yüksektir.

Visual Studio 2010 veritabanı projesinde dağıtım ayarları bir dağıtım yapılandırması (.sqldeployment) dosyasında yer alır. Bu konuda, ortama özgü dağıtım yapılandırma dosyalarının nasıl oluşturulacağı ve VSDBCMD parametresi olarak kullanmak istediğiniz yapılandırmanın nasıl belirtileceği gösterilir.

Bu konu, Fabrikam, Inc. adlı kurgusal bir şirketin kurumsal dağıtım gereksinimlerini temel alan bir dizi öğreticinin bir bölümünü oluşturur. Bu öğretici serisi, ASP.NET MVC 3 uygulaması, Windows Communication Foundation (WCF) hizmeti ve veritabanı projesi dahil olmak üzere gerçekçi bir karmaşıklık düzeyine sahip bir web uygulamasını temsil etmek için örnek bir çözüm (Contact Manager çözümü) kullanır.

Bu öğreticilerin merkezinde yer alan dağıtım yöntemi, derleme işleminin iki proje dosyası tarafından denetlendiği Proje Dosyasını Anlama bölümünde açıklanan bölünmüş proje dosyası yaklaşımını temel alır: biri her hedef ortama uygulanan derleme yönergelerini, diğeri de ortama özgü derleme ve dağıtım ayarlarını içerir. Derleme zamanında, ortama özgü proje dosyası, tam bir derleme yönergeleri kümesi oluşturmak için ortama özgü belirsiz proje dosyasıyla birleştirilir.

Göreve Genel Bakış

Bu konuda aşağıdakiler varsayılır:

  • Proje Dosyasını Anlama bölümünde açıklandığı gibi çözüm dağıtımında bölünmüş proje dosyası yaklaşımını kullanırsınız.
  • VsDBCMD'yi proje dosyasından çağırarak derleme işlemini anlama bölümünde açıklandığı gibi veritabanı projenizi dağıtabilirsiniz.

Hedef ortamlar arasında veritabanı dağıtım özelliklerinin değişiklik göstermesini destekleyen bir dağıtım sistemi oluşturmak için şunları yapmanız gerekir:

  • Her hedef ortam için bir dağıtım yapılandırması (.sqldeployment) dosyası oluşturun.
  • Dağıtım yapılandırma dosyasını komut satırı anahtarı olarak belirten bir VSDBCMD komutu oluşturun.
  • VSDBCMD seçeneklerinin hedef ortama uygun olması için VSDBCMD komutunu bir Microsoft Build Engine (MSBuild) proje dosyasında parametreleştirin.

Bu konuda, bu yordamların her birinin nasıl gerçekleştirileceği gösterilir.

Environment-Specific Dağıtım Yapılandırma Dosyaları Oluşturma

Varsayılan olarak, veritabanı projesi Database.sqldeployment adlı tek bir dağıtım yapılandırma dosyası içerir. Bu dosyayı Visual Studio 2010'da açarsanız kullanabileceğiniz farklı dağıtım seçeneklerini görebilirsiniz:

  • Dağıtım karşılaştırma harmanlaması. Bu, projenizin veritabanı harmanlamasını mı ( kaynak harmanlaması) yoksa hedef sunucunuzun veritabanı harmanlamasını mı ( hedef harmanlama) kullanacağınızı seçmenizi sağlar. Çoğu durumda, bir geliştirme veya test ortamına dağıtım yaparken kaynak harmanlamayı kullanmak istersiniz. Hazırlama veya üretim ortamına dağıttığınızda, birlikte çalışabilirlik sorunlarını önlemek için hedef harmanlamayı genellikle değişmeden bırakmak istersiniz.
  • Veritabanı özelliklerini dağıtma. Bu, Database.sqlsettings dosyasında tanımlandığı gibi veritabanı özelliklerinin uygulanıp uygulanmayacağını seçmenizi sağlar. Bir veritabanını ilk kez dağıtırken veritabanı özelliklerini dağıtmanız gerekir. Mevcut bir veritabanını güncelleştiriyorsanız, özellikler zaten yerinde olmalıdır ve bunları yeniden dağıtmanız gerekmez.
  • Veritabanını her zaman yeniden oluşturun. Bu, hedef veritabanını şemanızla güncel hale getirmek için her dağıttığınızda hedef veritabanını yeniden oluşturmayı veya artımlı değişiklikler yapmayı seçmenizi sağlar. Veritabanını yeniden oluşturursanız, mevcut veritabanındaki tüm verileri kaybedersiniz. Bu nedenle, hazırlama veya üretim ortamlarına yapılan dağıtımlar için genellikle bunu false olarak ayarlamanız gerekir.
  • Veri kaybı yaşanabilirse artımlı dağıtımı engelleyin. Bu, veritabanı şemasında yapılan bir değişikliğin veri kaybına neden olması durumunda dağıtımın durdurulup durdurulmayacağını seçmenizi sağlar. Üretim ortamına yapılan bir dağıtımda, size müdahale etme ve önemli verileri koruma fırsatı vermek için genellikle bunu true olarak ayarlarsınız. Veritabanını her zaman yeniden oluşturseçeneğini false olarak ayarladıysanız, bu ayarın hiçbir etkisi olmaz.
  • Dağıtımı tek kullanıcı modunda yürütür. Bu genellikle geliştirme veya test ortamlarında sorun oluşturmaz. Ancak, hazırlama veya üretim ortamlarına yapılan dağıtımlar için bunu genellikle true olarak ayarlamanız gerekir. Bu, dağıtım devam ederken kullanıcıların veritabanında değişiklik yapmasını engeller.
  • Dağıtımdan önce veritabanını yedekleyin. Veri kaybına karşı önlem olarak genellikle bir üretim ortamına dağıtım yaparken bunu true olarak ayarlarsınız. Hazırlama veritabanınızda çok fazla veri varsa, hazırlama ortamına dağıttığınızda da bunu true olarak ayarlamak isteyebilirsiniz.
  • Hedef veritabanında bulunan ancak veritabanı projesinde olmayan nesneler için DROP deyimleri oluşturun. Çoğu durumda bu, veritabanında artımlı değişiklikler yapmanın ayrılmaz ve önemli bir parçasıdır. Veritabanını her zaman yeniden oluşturseçeneğini false olarak ayarladıysanız, bu ayarın hiçbir etkisi olmaz.
  • CLR türlerini güncelleştirmek için ALTER ASSEMBLY deyimlerini kullanmayın. Bu ayar, SQL Server ortak dil çalışma zamanı (CLR) türlerini daha yeni derleme sürümlerine nasıl güncelleştirmesi gerektiğini belirler. Bu, çoğu senaryoda false olarak ayarlanmalıdır.

Bu tabloda farklı hedef ortamlar için tipik dağıtım ayarları gösterilmektedir. Ancak, ayarlarınız tam gereksinimlerinize bağlı olarak farklı olabilir.

Geliştirici/Test Hazırlama/Tümleştirme Üretim
Dağıtım karşılaştırma harmanlaması Kaynak Hedef Hedef
Veritabanı özelliklerini dağıtma Doğru Yalnızca ilk kez Yalnızca ilk kez
Veritabanını her zaman yeniden oluşturma Doğru Yanlış Yanlış
Veri kaybı yaşanabilirse artımlı dağıtımı engelle Yanlış Belki Doğru
Dağıtım betiğini tek kullanıcı modunda yürütme Yanlış Doğru Doğru
Dağıtımdan önce veritabanını yedekleme Yanlış Belki Doğru
Hedef veritabanında bulunan ancak veritabanı projesinde olmayan nesneler için DROP deyimleri oluşturma Yanlış Doğru Doğru
CLR türlerini güncelleştirmek için ALTER ASSEMBLY deyimlerini kullanmayın Yanlış Yanlış Yanlış

Veritabanı projesinin birden çok hedefe dağıtımını desteklemek için her hedef ortam için bir dağıtım yapılandırma dosyası oluşturmanız gerekir.

Ortama özgü bir yapılandırma dosyası oluşturmak için

  1. Visual Studio 2010'da, Çözüm Gezgini penceresinde veritabanı projenize sağ tıklayın ve ardından Özellikler'e tıklayın.

  2. Veritabanı projesi özellikleri sayfasındaki Dağıt sekmesinin Dağıtım yapılandırma dosyası satırında Yeni'ye tıklayın.

    Veritabanı projesi özellikleri sayfasındaki Dağıt sekmesinin Dağıtım yapılandırma dosyası satırında Yeni'ye tıklayın.

  3. Yeni Dağıtım Yapılandırma Dosyası iletişim kutusunda, dosyaya anlamlı bir ad verin (örneğin, TestEnvironment.sqldeployment) ve ardından Kaydet'e tıklayın.

  4. [Dosyaadı].sqldeployment sayfasında, dağıtım özelliklerini hedef ortamınızın gereksinimlerine uyacak şekilde ayarlayın ve dosyayı kaydedin.

    Dosyaadı .sqldeployment sayfasında, dağıtım özelliklerini hedef ortamınızın gereksinimleriyle eşleşecek şekilde ayarlayın ve dosyayı kaydedin.

  5. Yeni dosyanın veritabanı projenizdeki Özellikler klasörüne eklendiğine dikkat edin.

    Yeni dosyanın veritabanı projenizdeki Özellikler klasörüne eklendiğine dikkat edin.

VSDBCMD'de Dağıtım Yapılandırma Dosyasını Belirtme

Visual Studio 2010'da çözüm yapılandırmalarını (Hata Ayıklama ve Yayın gibi) kullandığınızda, bir dağıtım yapılandırma dosyasını her yapılandırmayla ilişkilendirebilirsiniz. Belirli bir yapılandırmayı oluşturduğunuzda, derleme işlemi yapılandırmaya özgü dağıtım yapılandırma dosyasına işaret eden yapılandırmaya özgü bir dağıtım bildirim dosyası oluşturur. Ancak, bu öğreticilerde açıklanan dağıtım yaklaşımının temel amaçlarından biri, kişilere Visual Studio 2010 ve çözüm yapılandırmalarını kullanmadan dağıtım işlemini denetleme olanağı sağlamaktır. Bu yaklaşımda, hedef dağıtım ortamından bağımsız olarak çözüm yapılandırması aynıdır. Veritabanı dağıtımınızı belirli bir hedef ortama uyarlamak için VSDBCMD komut satırı seçeneklerini kullanarak dağıtım yapılandırma dosyanızı belirtebilirsiniz.

VSDBCMD'nizde bir dağıtım yapılandırma dosyası belirtmek için p:/DeploymentConfigurationFile anahtarını kullanın ve dosyanızın tam yolunu sağlayın. Bu, dağıtım bildiriminin tanımladığını dağıtım yapılandırma dosyasını geçersiz kılar. Örneğin, ContactManager veritabanını bir test ortamına dağıtmak için bu VSDBCMD komutunu kullanabilirsiniz:

vsdbcmd.exe /a:Deploy
            /manifest:"…\ContactManager.Database.deploymanifest"
            /cs:"Data Source=TESTDB1;Integrated Security=true"
            /p:TargetDatabase=ContactManager
            /p:DeploymentConfigurationFile=
              "…\ContactManager.Database_TestEnvironment.sqldeployment"
            /dd+
            /script:"…\Publish-ContactManager-Db.sql"

Not

Derleme işleminin dosyayı çıkış dizinine kopyaladığında .sqldeployment dosyanızı yeniden adlandırabileceğini unutmayın.

Dağıtım öncesi veya dağıtım sonrası SQL betiklerinizde SQL komut değişkenlerini kullanıyorsanız, ortama özgü bir .sqlcmdvars dosyasını dağıtımınızla ilişkilendirmek için benzer bir yaklaşım kullanabilirsiniz. Bu durumda, .sqlcmdvars dosyanızı tanımlamak için p:/SqlCommandVariablesFile anahtarını kullanırsınız.

MSBuild Proje Dosyasından VSDBCMD Komutunu Çalıştırma

MSBuild hedefi içindeki bir Exec görevini kullanarak BIR MSBuild proje dosyasından VSDBCMD komutu çağırabilirsiniz. En basit haliyle şöyle görünür:

<Target Name="DeployDatabase">     
   <PropertyGroup>      
      <_Cmd>
         Add your VSDBCMD command here
      </_Cmd>
   </PropertyGroup>
   <Exec Command="$(_Cmd)"/> 
 </Target>
  • Pratikte, proje dosyalarınızın okunmasını ve yeniden kullanılmasını kolaylaştırmak için çeşitli komut satırı parametrelerini depolamak için özellikler oluşturmak istersiniz. Bu, kullanıcıların ortama özgü bir proje dosyasında özellik değerleri sağlamasını veya MSBuild komut satırından varsayılan değerleri geçersiz kılmasını kolaylaştırır. Proje Dosyasını Anlama bölümünde açıklanan bölünmüş proje dosyası yaklaşımını kullanıyorsanız, derleme yönergelerinizi ve özelliklerinizi iki dosya arasında buna göre bölmeniz gerekir:
  • Dağıtım yapılandırma dosya adı, veritabanı bağlantı dizesi ve hedef veritabanı adı gibi ortama özgü ayarlar ortama özgü proje dosyasına girmelidir.
  • VSDBCMD komutunu çalıştıran MSBuild hedefi, VSDBCMD yürütülebilir dosyasının konumu gibi tüm evrensel özelliklerle birlikte evrensel proje dosyasına girmelidir.

.deploymanifest dosyasının oluşturulması ve kullanıma hazır olması için VSDBCMD'yi çağırmadan önce veritabanı projesini oluşturduğunuzdan da emin olmalısınız. Bu yaklaşımın tam bir örneğini, Contact Manager örnek çözümündeki proje dosyalarında size yol gösteren Derleme sürecini anlama konusunda görebilirsiniz.

Sonuç

Bu konuda, MSBuild ve VSDBCMD kullanarak veritabanı projelerini dağıtırken veritabanı özelliklerini farklı hedef ortamlara nasıl uyarlayabileceğiniz açıklanmıştır. Bu yaklaşım, veritabanı projelerini daha büyük, kurumsal ölçekli çözümlerin bir parçası olarak dağıtmanız gerektiğinde kullanışlıdır. Bu çözümler genellikle korumalı geliştirme veya test ortamları, hazırlama veya tümleştirme platformları ve üretim veya canlı ortamlar gibi birden çok hedefe dağıtılır. Bu hedef ortamların her biri genellikle benzersiz bir veritabanı dağıtım özellikleri kümesi gerektirir.

Daha Fazla Bilgi

VSDBCMD.exe kullanarak veritabanı projelerini dağıtma hakkında daha fazla bilgi için bkz. Veritabanı Projelerini Dağıtma. Dağıtım işlemini denetlemek için özel MSBuild proje dosyalarını kullanma hakkında daha fazla bilgi için bkz. Proje Dosyasını Anlama ve Derleme sürecini anlama.

MSDN'de yer alan bu makaleler veritabanı dağıtımı hakkında daha genel yönergeler sağlar: