Veritabanı Projeleri Dağıtma

Jason Lee tarafından

PDF 'YI indir

Note

Birçok kurumsal dağıtım senaryosunda, dağıtılmış bir veritabanına artımlı güncelleştirmeler yayımlama yeteneğinin olması gerekir. Diğer bir deyişle, veritabanını her dağıtımda yeniden oluşturmak, bu da var olan veritabanındaki tüm verileri kaybetmeniz anlamına gelir. Visual Studio 2010 ile çalışırken, VSDBCMD kullanmak, artımlı veritabanı yayımlaması için önerilen yaklaşımdır. Ancak, Visual Studio 'nun sonraki sürümü ve Web yayımlama işlem hattı (WPP) doğrudan artımlı yayımlamayı destekleyen araçları içerir.

Visual Studio 2010 ' de Contact Manager örnek çözümünü açarsanız, veritabanı projesinin dört dosya içeren bir Özellikler klasörü içerdiğini görürsünüz.

Proje dosyasıyla birlikte (Bu durumdaContactManager. Database. dbproj ), bu dosyalar derleme ve dağıtım sürecinin çeşitli yönlerini denetler:

  • Database. sqlcmdvars dosyası, projeyi dağıtırken kullandığınız HERHANGI bir sqlcmd değişkeni için değerler sağlar. Her çözüm yapılandırması (örneğin, hata ayıklama ve yayın) farklı bir. sqlcmdvars dosyası belirtebilir.
  • Database. sqldeployment dosyası, projenizde tanımlanan harmanlamayı ya da hedef sunucunun harmanlamasını kullanmak, hedef veritabanının her seferinde yeniden oluşturulup oluşturulmayacağını veya mevcut veritabanını güncel hale getirmek için bu şekilde değişiklik yapıp kılmayacağını, dağıtıma özgü ayarlar sağlar. Her çözüm yapılandırması, farklı bir. sqldeployment dosyası belirtebilir.
  • Database. sqlpermissions dosyası, hedef veritabanına eklemek istediğiniz izinleri tanımlamak için KULLANABILECEĞINIZ bir XML belgesidir. Tüm çözüm konfigürasyonları aynı. sqlpermissions dosyasını paylaşır.
  • Database. sqlsettings dosyası, veritabanı oluşturulurken kullanılacak harmanlama, karşılaştırma işleçleri davranışı vb. gibi veritabanı düzeyinde özellikleri belirtir. Tüm çözüm konfigürasyonları aynı. sqlsettings dosyasını paylaşır.

Bu dosyaların Visual Studio 'da açılması ve içerikleri öğrenmeniz bir süre harcamaktır.

Bir veritabanı projesi oluşturduğunuzda, yapı işlemi iki dosya oluşturur:

  • Bir veritabanı şeması (. dbschema dosyası). Bu, XML biçiminde oluşturmak istediğiniz veritabanının şemasını açıklar.
  • Dağıtım bildirimi (. DeployManifest dosyası). Bu, veritabanınızı oluşturmak ve dağıtmak için gereken tüm bilgileri içerir. Dağıtım yönergeleri (. sqldeployment dosyası) ve dağıtım öncesi veya dağıtım sonrası SQL betikleri gibi diğer kaynaklarla birlikte. dbschema dosyasına başvurur.

Bu kaynaklar arasındaki ilişkiyi gösterir:

Gördüğünüz gibi,. sqlsettings dosyası ve. sqlpermissions dosyası yapı işlemine yönelik girişlerdir. Veritabanı proje dosyası ile birlikte, bu dosyalar veritabanı şeması dosyasını oluşturmak için kullanılır. . Sqldeployment dosyası ve. sqlcmdvars dosyası, yapı işlemi değiştirilmeden geçer. Dağıtım bildirimi, veritabanı şemasının konumunu,. sqldeployment dosyasını,. sqlcmdvars dosyasını ve dağıtım öncesi veya dağıtım sonrası SQL betiklerini gösterir.

Bir veritabanı projesini dağıtmak için neden VSDBCMD kullanılmalıdır?

Veritabanı projelerini dağıtmaya yönelik çeşitli farklı yaklaşımlar vardır. Ancak, bunların hepsi bir veritabanı projesini kurumsal bir ortamdaki uzak sunuculara dağıtmak için uygun değildir. Veritabanı projesi dağıtımından istediğinizi göz önünde bulundurun. Kurumsal dağıtım senaryolarında, muhtemelen şunları yapmak isteyebilirsiniz:

  • Veritabanı projesini uzak bir konumdan dağıtma özelliği.
  • Var olan bir veritabanında artımlı güncelleştirmeler yapma özelliği.
  • Dağıtım öncesi betikleri veya dağıtım sonrası betikleri ekleme özelliği.
  • Dağıtımı birden çok hedef ortama uyarlayabilme özelliği.
  • Veritabanı projesini daha büyük, genellikle komut dosyalı, tek adımlı bir çözüm dağıtımının parçası olarak dağıtma özelliği.

Bir veritabanı projesini dağıtmak için kullanabileceğiniz üç ana yaklaşım vardır:

  • Visual Studio 2010 ' de veritabanı proje türüyle dağıtım işlevselliğini kullanabilirsiniz. Visual Studio 2010 ' de bir veritabanı projesi derleyip dağıtırken, dağıtım işlemi, derleme yapılandırmasına özel bir SQL tabanlı dağıtım dosyası oluşturmak için dağıtım bildirimini kullanır. Bu, zaten mevcut değilse veritabanını oluşturur veya zaten varsa veritabanında gerekli değişiklikleri yapar. Bu dosyayı hedef sunucunuzda çalıştırmak için SQLCMD. exe ' yi kullanabilir veya Visual Studio 'Yu dosyayı oluşturmak ve çalıştırmak için ayarlayabilirsiniz. Bu yaklaşımın dezavantajı, dağıtım ayarları üzerinde yalnızca sınırlı denetim sahibi olmanız olabilir. Ayrıca, ortama özgü değişken değerleri sağlamak için SQL dağıtım dosyasını da değiştirmeniz gerekebilir. Bu yaklaşımı yalnızca Visual Studio 2010 yüklü bir bilgisayardan kullanabilirsiniz ve geliştiricinin tüm hedef ortamlar için bağlantı dizelerini ve kimlik bilgilerini bilmeleri ve sağlaması gerekir.
  • Bir veritabanını bir Web uygulaması projesinin parçası olarak dağıtmakiçin Internet INFORMATION SERVICES (IIS) Web Dağıtım aracı 'nı (Web dağıtımı) kullanabilirsiniz. Ancak, bir hedef sunucuda var olan bir yerel veritabanını çoğaltmak yerine bir veritabanı projesi dağıtmak istiyorsanız bu yaklaşım çok daha karmaşıktır. Veritabanı projesinin oluşturduğu SQL dağıtım betiğini çalıştırmak için Web Dağıtımı yapılandırabilirsiniz, ancak bunu yapmak için, Web uygulaması projeniz için özel bir WPP hedef dosyası oluşturmanız gerekir. Bu, dağıtım işlemine önemli miktarda karmaşıklık ekler. Ayrıca, Web Dağıtımı var olan veritabanlarına Artımlı güncelleştirmeleri doğrudan desteklemez. Bu yaklaşım hakkında daha fazla bilgi için bkz. Web yayımlama işlem hattını paketlemek için veritabanı projesi DAĞıTıLAN SQL dosyasını genişletme.
  • Veritabanı şemasını ya da dağıtım bildirimini kullanarak veritabanını dağıtmak için VSDBCMD yardımcı programını kullanabilirsiniz. VSDBCMD. exe ' yi, daha büyük, komut dosyalı dağıtım sürecinin bir parçası olarak veritabanlarını yayımlamanıza olanak tanıyan bir MSBuild hedefinden çağırabilirsiniz. . Sqlcmdvars dosyanızdaki ve diğer veritabanı özelliklerindeki değişkenleri, birden çok derleme yapılandırması oluşturmadan farklı ortamlarda dağıtımınızı özelleştirmenizi sağlayan bir VSDBCMD komutundan geçersiz kılabilirsiniz. VSDBCMD, fark eden işlevsellik sağlar, yani yalnızca hedef veritabanını veritabanı şemanıza göre hizalamak için gerekli değişiklikleri yapar. VSDBCMD, dağıtım işlemi üzerinde ayrıntılı denetim sağlayan çok çeşitli komut satırı seçenekleri de sunmaktadır.

Bu genel bakışta, genel bir kurumsal dağıtım senaryosuna en uygun yaklaşım olan VSDBCMD ' yi MSBuild ile birlikte kullanma makalesine bakabilirsiniz:

Visual Studio 2010 Web Deploy 2.0 VSDBCMD.exe
Uzaktan dağıtımı destekliyor mu? Evet Evet Evet
Artımlı güncelleştirmeler destekleniyor mu? Evet Hayır Evet
Dağıtım öncesi/dağıtım sonrası betikleri destekliyor mu? Evet Evet Evet
Çok ortamlı dağıtımı destekliyor mu? Sınırlı Sınırlı Evet
Betikleştirilmiş dağıtımı destekliyor mu? Sınırlı Evet Evet

Bu konunun geri kalanında, veritabanı projelerini dağıtmak için VSDBCMD ' nin MSBuild ile kullanımı açıklanmaktadır.

Dağıtım sürecini anlama

VSDBCMD yardımcı programı veritabanı şemasını (. dbschema dosyası) veya dağıtım bildirimini (. DeployManifest dosyası) kullanarak bir veritabanını dağıtmanıza olanak tanır. Uygulamada, dağıtım bildirimi, çeşitli dağıtım özellikleri için varsayılan değerler sağlamanıza ve dağıtım öncesi veya dağıtım sonrası SQL betikleri çalıştırmak istediğinizi belirleyebilmenizi sağlayan dağıtım bildirimini neredeyse her zaman kullanacaksınız. Örneğin, bu VSDBCMD komutu, ContactManager veritabanını bir test ortamındaki veritabanı sunucusuna dağıtmak için kullanılır:

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

Bu durumda:

  • /A (veya /Action) anahtarı, VSDBCMD ' nin ne yapmak istediğinizi belirtir. Bunu içeri veya dağıtımaayarlayabilirsiniz. Içeri aktarma seçeneği, var olan bir veritabanından bir. dbschema dosyası oluşturmak için kullanılır ve Deploy seçeneği bir. dbschema dosyasını hedef veritabanına dağıtmak için kullanılır.
  • /MANIFEST (veya /ManifestFile) anahtarı, dağıtmak istediğiniz. DeployManifest dosyasını tanımlar. Bunun yerine. dbschema dosyasını kullanmak isterseniz, /model (veya /ModelFile) anahtarını kullanın.
  • /CS (veya /ConnectionString) anahtarı, hedef veritabanı sunucusu için bağlantı dizesini sağlar. Bunun veritabanı oluşturmak için, VSDBCMD veritabanının—adını içermediğinden sunucuya bağlanması gerektiğini unutmayın; tek bir veritabanına bağlanması gerekmez. . DeployManifest dosyanız bir bağlantı dizesi içeriyorsa, bu anahtarı atlayabilirsiniz. Anahtarı yine de kullanırsanız, anahtar değeri. DeployManifest değerini geçersiz kılar.
  • /P: TargetDatabase özelliği, oluşturma sırasında hedef veritabanına atamak istediğiniz adı sağlar. Bu,. DeployManifest dosyasındaki TargetDatabase özelliğinin değerini geçersiz kılar. Çok çeşitli dağıtım özellikleri ayarlamak ve. sqlcmdvars dosyanızda belirtilen tüm SQLCMD değişkenlerini geçersiz kılmak için /p: [Property Name]sözdizimini kullanabilirsiniz.
  • /Dd + (veya /DeployToDatabase + ) anahtarı, bir dağıtım oluşturup hedef ortama dağıtmak istediğinizi belirtir. /Dd- belirtirseniz veya anahtarı atlarsanız, VSDBCMD bir dağıtım betiği oluşturur, ancak bunu hedef ortama dağıtmaz. Bu anahtar genellikle karışıklık kaynağıdır ve sonraki bölümde daha ayrıntılı olarak açıklanmıştır.
  • /Script (veya /DeploymentScriptFile) anahtarı, dağıtım betiğini nerede oluşturmak istediğinizi belirtir. Bu değer dağıtım sürecini etkilemez.

VSDBCMD hakkında daha fazla bilgi için bkz . VSDBCMD Için komut satırı başvurusu. EXE (dağıtım ve şema Içeri aktarma) ve nasıl yapılır: VSDBCMD kullanarak bir veritabanını bir komut Isteminden dağıtıma hazırlama. EXE.

VSDBCMD 'yi MSBuild proje dosyasından nasıl kullanabileceğiniz hakkında bir örnek için bkz. Yapı sürecini anlama. Birden çok ortam için veritabanı dağıtım ayarlarını yapılandırma örnekleri için bkz. birden çok ortam Için veritabanı dağıtımlarını özelleştirme.

DeployToDatabase anahtarını anlama

/Dd veya /DeployToDatabase anahtarının davranışı, VSDBCMD 'yi bir. dbschema dosyası veya. DeployManifest dosyası ile kullanıp kullanmayacağınızı bağlıdır. Bir. dbschema dosyası kullanıyorsanız, davranış oldukça basittir:

  • /Dd + veya /ddbelirtirseniz, VSDBCMD bir dağıtım betiği oluşturacak ve veritabanını dağıtacaktır.
  • /DDI belirtirseniz veya anahtarı atlarsanız, VSDBCMD yalnızca bir dağıtım betiği oluşturacaktır.

. DeployManifest dosyası kullanıyorsanız, davranış çok daha karmaşıktır. Bunun nedeni. DeployManifest dosyasında, veritabanının dağıtılıp dağıtılmadığını da belirleyen bir DeployToDatabase Özellik adı içerir.

<DeployToDatabase>False</DeployToDatabase>

Bu özelliğin değeri, veritabanı projesinin özelliklerine göre ayarlanır. Dağıtım betiği (. SQL) oluşturmakiçin Dağıt eylemini ayarlarsanız, değer falseolur. Dağıtım betiği (. SQL) oluşturmak ve veritabanına dağıtmakiçin Dağıt eylemini ayarlarsanız değer trueolur.

Note

Bu ayarlar, belirli bir yapı yapılandırması ve platformu ile ilişkilendirilir. Örneğin, hata ayıklama yapılandırması için ayarları yapılandırır ve ardından Sürüm yapılandırması ' nı kullanarak yayımlarsanız, ayarlarınız kullanılmaz.

Note

Bu senaryoda, Visual Studio 2010 ' ın veritabanınızı dağıtmasını istemediğiniz için dağıtım eylemi her zaman bir dağıtım betiği (. SQL) oluşturmaküzere ayarlanmalıdır. Diğer bir deyişle, DeployToDatabase özelliği her zaman falseolmalıdır.

Bir DeployToDatabase özelliği belirtildiğinde, /dd anahtarı yalnızca özellik değeri falseolduğunda özelliği geçersiz kılar:

  • DeployToDatabase özelliği falseise ve /dd + ya da /ddbelirtirseniz VSDBCMD, DeployToDatabase özelliğini geçersiz kılar ve veritabanını dağıtır.
  • DeployToDatabase özelliği falseise ve /DDI belirtirseniz veya anahtarı atlarsanız, VSDBCMD veritabanını dağıtmaz.
  • DeployToDatabase özelliği trueise, VSDBCMD bu anahtarı yoksayar ve veritabanını dağıtır.
  • Her durumda, veritabanını dağıtıp dağıtmaktan bağımsız olarak bir dağıtım betiği oluşturulur.

Sonuç

Bu konu, Visual Studio 2010 ' deki veritabanı projelerine yönelik derleme ve dağıtım sürecine genel bir bakış sağlamıştır. Ayrıca, kurumsal ölçekte veritabanı dağıtımını desteklemek için VSDBCMD. exe ' yi MSBuild ile nasıl kullanabileceğinizi da açıklanmaktadır.

Bu uygulamada nasıl çalıştığı hakkında daha fazla bilgi için bkz. birden çok ortam Için veritabanı dağıtımlarını özelleştirme.

Daha Fazla Bilgi

Her ortam için ayrı bir dağıtım yapılandırma dosyası oluşturarak veritabanı dağıtımlarını özelleştirme hakkında daha fazla bilgi için bkz. birden çok ortam Için veritabanı dağıtımlarını özelleştirme. Dağıtım sonrası betiği çalıştırarak veritabanı rolü üyeliklerini yapılandırma hakkında yönergeler için bkz. test ortamlarına veritabanı rolü üyelikleri dağıtma. Üyelik veritabanlarının getirmesindeki bazı benzersiz güçlükleri yönetme hakkında yönergeler için bkz. Üyelik veritabanlarını kurumsal ortamlara dağıtma.

MSDN 'deki bu konular, Visual Studio veritabanı projeleri ve veritabanı dağıtım işlemi hakkında daha geniş yönergeler ve arka plan bilgileri sağlar: