Kaynak Kontrolü altındaki Saklı Yordamlar, en iyi uygulama


16

Şu anda Tortoise SVN'yi bir .NET Web Uygulamasını kontrol etmek için kullanıyorum. SQL Server depolanmış prosedürlerimizi Kaynak Kontrolüne getirmenin en iyi yolu nedir? Şu anda VS 2010'u geliştirme ortamım olarak kullanıyorum ve SQL Server Veri Araçları'nı (SSDT) ​​kullanarak şirket dışı bir SQL Server 2008 R2 veritabanına bağlanıyorum.

Geçmişte ne yaptığımı procs bir .sql dosyasına kaydetmek ve bu dosyaları kaynak denetiminde tutmak. Eminim bundan daha etkili bir yol olmalı mı? Üretim makinesinde VS2010, SSDT ve hatta SQL Server'a kurabileceğim bir uzantı var mı?


2
Visual Studio'da SSDT proje türünü kullanıyorsanız, bu projeyi kaynak denetimine ekleyin. Bu kadar.
Mark Storey-Smith

1
Lütfen amaçlarınızı netleştirin - sadece veritabanı nesnelerinin versiyonunu mı arıyorsunuz, yoksa bunu bir dağıtım platformu olarak mı kullanmaya çalışıyorsunuz?
Jon Seigel

Yanıtlar:


14

Redgate'ten böyle araçlar var, ama her zaman en iyisinin SQL dosyaları olarak, belki de çözümünüzde bir Veritabanı Projesi'nde (SSDT?) Kaydetmek olduğunu gördüm.

Bununla birlikte, aşağıdaki yönergeleri öneriyorum:

  • Her zaman SVN sürümünü "güncel" / "en son" olarak kabul edin
  • Çalıştırdığınız her komut dosyasının if exists then dropbaşında uygun bir " " olduğundan emin olun
  • Varsa izinlerinizi yazmayı unutmayın

Başlangıçta bu SQL dosyalarını doğrudan SSMS'den komut dosyası oluşturarak oluşturabilirsiniz ve SSMS'yi izinlerinizin yanı sıra tüm " drop" ve " create" kodlarınızı da yazacak şekilde ayarlayabilirsiniz .


Veritabanı proje türünün farkında değildim ve sadece SSDT'yi keşfetmeye başladım, ancak bu umut verici görünüyor. Üçüncü taraf araçlara bağımlılık olmadığından ve .sql dosyalarını mevcut Kaynak Kontrolümüze kolayca bırakabildiğim için bu çözümü seçtim.
QFDev

Ayrıca, ürün üzerinde geliştiricilere yönelik haklara izin vermeyin ve hakları olanlar yalnızca kaynak denetiminden dağıtılır.
HLGEM

3
Diğer görünümler / süreçler tarafından başvurulan tabloları / görünümleri değiştiriyorsanız "varsa bırak, (yeniden) yeni tanımla oluştur" komutuna dikkat edin. Bu tür bağımlı görünümlerin çıktısının bozuk olduğu (sütun türü ve içeriği taşındı, ancak adları değil), önceki yapıyı varsayarak yeniden derlemeden bir sorgu planı nedeniyle vuruldum. Daha güvenli bir seçenek "yoksa kukla oluştur" ve ardından "tabloyu değiştir / görüntüle / proc" olarak değişir; çünkü alter, planları gerektiği gibi geçersiz kılmak için sysdepends kayıtlarını izler ve drop + create, bu tür kayıtları silme mendilleri olarak oluşturmaz ve oluşturmayacak sarkan referanslar.
David Spillett

Sürüm kontrolünde tetikleyicileriniz varsa @DavidSpillett'in yorumu daha da önemlidir, çünkü drop + create kilitlenmede bile başarısız olabilir, create kum + alter ile olmaz
James Z

4

SQL dosyalarını kaynak denetiminde kaydetmek yalnızca SQL dosyaları üzerinde kontrol sağlar. Gerçek veritabanı nesnelerinin değişikliklerini kontrol etmez veya aynı veritabanı nesnesinin birden fazla kullanıcı tarafından aynı anda değiştirilmesini engellemez (ve sanırım bunu da kontrol altında tutmak istersiniz). Kullandığımız üçüncü taraf bir araçtır ( ApexSQL Sürümü), hem SSMS hem de VS ile entegre olur, nesnenin veritabanı sürümü ile mi yoksa Kaynak Kontrolü sürümüyle mi çalışacağınızı seçebilirsiniz. Bir veritabanı sürümünü düzenliyorsanız, otomatik olarak yalnızca sizin tarafınızdan teslim alınır, böylece kimse onu düzenleyemez (farklı kullanıcılardan gelen değişiklikleri birleştirmez). Yalnızca tekrar check-in yaptığınızda diğerleri değiştirebilir. Ve SC sürümünüzü canlı bir nesnenin sürümünden farklı hale getirebilirsiniz (bunu gün için ayrıldığımda ve düzenlemeleri bitirip bir sonraki testte planladığımda kullanıyorum)



3

Tavsiye ve ücretsiz Ankhsvn deneyin .

Ana sayfadan:

AnkhSVN, Microsoft Visual Studio 2005, 2008, 2010 ve 2012 için bir Subversion Source Control Provider'dır .

AnkhSVN, Visual Studio tarafından desteklenen tüm proje türlerine Apache ™ Subversion® kaynak kodu yönetimi desteği sağlar ve en yaygın sürüm kontrol işlemlerini doğrudan Microsoft Visual Studio IDE içinden gerçekleştirmenizi sağlar.

Bekleyen Değişiklikler kontrol paneli, geliştirme süreciniz hakkında size benzersiz bir fikir verir ve kaynak koduna ve sorun yönetimi özelliklerine kolay erişim sağlar. Derin kaynak kodu kontrolü (SCC) entegrasyonu, geliştirmeye odaklanmanızı sağlarken, AnkhSVN tüm değişikliklerinizi takip eder ve size özel ihtiyaçlarınızı etkin bir şekilde ele almanız için araçlar sağlar.


3

Hem RedGate hem de Visual Studio'nun veritabanı projesini denedim ve veritabanı tanımını veritabanı projesinde depolamayı tercih ediyorum. Veritabanı çözümün bir parçası olur olmaz, tercih ettiğiniz kaynak kontrol sağlayıcısını kullanabilirsiniz. Çoğu mükemmel Visual Studio entegrasyonuna sahiptir.

SSDT araçlarıyla, şema karşılaştırmaları kolayca yapabilmenizi ve şema yükseltme komut dosyaları oluşturmanızı sağlayan veritabanı tanımının 'en son sürümüne' sahipsiniz.

Bununla birlikte, şema genellikle denklemin sadece bir parçasıdır. Gerçek hayatta, veritabanlarının zaten çok fazla veriye sahip olduğu ortaya çıkıyor. Ve kullanıcılarım, kaybettiklerinde oldukça hayal kırıklığına uğruyorlar.

Bu nedenle, v1.0'ı kullanıma sunduğumda, yükseltme komut dosyalarını korumak için gerekli ihtiyaçlar artar. Bazen bunlar sadece şema değişiklikleri içerir, ancak birçok kez başka bir tablonun içeriğine göre varsayılanlar oluşturmam gerekiyor, veri vb. Ekilene kadar belirli bir kısıtlamayı serbest bırakmam gerekiyor. Genellikle şemayı yükseltmek tamamen kesmez. Benim tercihim bu yükseltme komut dosyasını veritabanı projesinde ayrı bir klasörde de kullanmaktır. Bunlar genellikle 'v1.0'dan v1.1'e yükseltme' gibi görünecektir.

Veritabanlarımda her zaman geçerli sürüm numarasını söyleyen bir referans tablosu var, böylece uyumsuz yükseltmeleri engelleyebilirim. Yükseltme komut dosyalarındaki ilk ifade, geçerli sürümü kontrol eder ve beklenenden farklı olup olmadığını kurtarır.

Veritabanı projelerinin bir diğer yararı da, aynı şemaya dayalı olarak farklı veri kümelerini dağıtabilmektir. Geliştirme, KG ekibi, kullanıcı kabul testi ve otomatik entegrasyon testleri için farklı bir veri setim var. Bir veritabanı projesinde yalnızca 1 dağıtım sonrası komut dosyası olabileceğinden, buradaki hile, 'ana' projeye başvuran yeni bir veritabanı projesi yapmak ve özel veri kümesini bu projenin dağıtım sonrası süreçlerinin bir parçası haline getirmektir.

Bunlar benim 2 sentim, Ne kadar ilerlerseniz, her şeyden önce, size ve ekibinize uymalı ve umarım ortak görevlerin çoğunda sizi desteklemelidir.


0

Sonunda kendim bir araç yazdım.

Ücretsiz olarak indirilebilir - http://www.gitsql.net

Umarım aynı son hedefe ulaşmak isteyen diğer insanlara yardımcı olur.

SQL Server'ı nasıl kontrol edeceğinizi anlatan bir makale. http://gitsql.net/documentation-04_SQL_Server_and_GIT

Mümkün olduğunca kolay hale getirmeye çalıştım. (3 ekran)

  • SQL Server'a bağlanma
  • Nesneleri seçin
  • Dışa aktarılacak / içe aktarılacak klasörü seçin

Ayrıca - yanlışlıkla - içe veya dışa aktarmak için tek tek nesneleri seçebilme özelliğini ekledim. Bu da geliştirirken çok kolay.

Genellikle bir saklı yordam ve bir tablo bir değişiklik yapmak ve sonra bu iki nesneyi bir GIT dizinine vermek.

Sonra değişiklikleri görsel olarak görmek için Kaynak Ağacı kullanın ve sonra mutlu olduğumda onları bitbucket taahhüt.


4
ücretsiz indirme - ancak sadece 20 nesne için. Bu cevap sadece ürününüz için bir reklamdır.
Thronk

-1

Şirketim, SQL veritabanları için komut dosyalarını kolayca ayıklamanıza , karşılaştırma yapabilmenize , komut dosyalarını canlı veritabanıyla hızlı bir şekilde karşılaştırmak için WinMerge'yi başlatabilmenize ve aynı zamanda hem komut dosyalarını güncellemede hem de değişiklikleri uygulamada senkronizasyon yapabilmenize yardımcı olan bu yeni aracı ( ücretsiz ) geliştirdi. veritabanına (daha karmaşık ve daha fazla risk içeren tablolar hariç).

Servantt, SQL Server Veritabanlarını Sürüm Kontrollü Komut Dosyaları ile karşılaştırmak için WinMerge'dir.

Yazılım geliştirmede en iyi uygulamaları destekler ve teşvik eder:

  • Veritabanı nesnelerini sürüm denetimi altında tutma (*)
  • Üretim ortamlarındaki geliştiricilerin erişim haklarını kaldırma
  • Performans darboğazları ve adlandırma standartları için prosedürlerdeki / görünümlerdeki değişikliklerin DBA incelemesi
  • Nesneleri tam nitelikli tanımlayıcılar ve köşeli ayraçlar kullanarak adlandırma (PROSEDÜR / GÖRÜNÜM / FONKSİYON / vb. Komut dosyalarını düzeltir)

(*) Komut dosyaları Git, Subversion, TFS, Source Safe veya başka herhangi bir VCS'nin çalışan bir kopyası olabilecek yerel bir klasöre kaydedilir.

Ücretsiz İndirme: http://servantt.com

Profesyonel sürüm (hala geliştirilme aşamasındadır) tamamen farklı bir canavar olacaktır - IIS'yi güncelleme, Windows Hizmetlerini güncelleme gibi görevleri otomatikleştirmek için dağıtım otomasyonunu (sürüm yönetimi) hedefliyor.


Bu araç çalışmıyor.
Neeraj Kumar

@NeerajKumar sayfada, sorununuzu açıklayabileceğiniz bir "bize ulaşın" adresi var. Yardımcı olmaktan memnuniyet duyarım.
Binden
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.