Nasıl kaynak denetiminde veritabanı değişiklikleri izlerim?

oy
22

Bizim projelerin çoğunda SQL Server 2000/2005 ve Vault veya SVN kullanıyoruz. Ben de kaynak kontrol sisteminde veritabanı şeması / proc değişiklikleri yakalamak için iyi bir çözüm bulamadık.

Mevcut çözüm (script dışarı nesneyi değiştirmek ve veritabanına işlemek) zorlamak için oldukça hantal ve zor.

Bazı özel geliştirme ile bu sorunu çözmek için nasıl fikirleri çok şey var, ama yerine varolan bir araç (ücretli araçlar gayet) yüklemek istiyorum.

Yani: nasıl veritabanı kod değişiklikleri izlerim? Eğer herhangi bir önerilen araçları var mı?


Düzenle:

Tüm öneriler için teşekkür ederiz. Zamanın kısıtlı olması nedeniyle, oldukça Burada kendi rulo istemem. Ve önerilerin çoğu bazı prosedürü takip etmek dev gerektiren kusur var.

Bunun yerine, ideal bir çözüm değişiklikleri için SQL veritabanı izlemek ve SCM için Algılanan değişikliklerin taahhüt ederim. SQL Server olsaydı o zaman SCM bu nesnenin senaryoyu işlemek, değişikliği yapan kullanıcı ile herhangi DML değişikliği kaydetmek olabilir Örneğin, bir eklenti-ben heyecan duyarım.

SQL 2005'te 1. Bir Ödemeyi did kadar bir nesneyi değiştirerek sizi kısıtlamak için nesne izinlerini kullanın: Biz içten yaklaşık iki sistem konuştuk. Ardından, iade prosedürü SCM içine komut bunu yapardım. 2. SCM herhangi bir değişiklik tespit etmek ve (anonim) onları işlemek için zamanlanmış bir iş çalıştırın.

Kullanıcı tarafından eylem bölümünü atlayıp sistem otomatik olarak tüm bu ele olabilir eğer iyi olurdu.

Oluştur 09/12/2008 saat 14:57
kaynak kullanıcı
Diğer dillerde...                            


14 cevaplar

oy
15

Veritabanınıza dışarı senaryoya Görsel stüdyo veritabanı sürümü kullanın. Bir cazibe gibi çalışır ve VS eklentileri varsa bunları elbette iyi, herhangi Kaynak kontrol sistemini kullanabilirsiniz. Bu araç aynı zamanda diğer yararlı özellikleri bir numarası vardır. bu büyük blog yayınında onları burada göz atın

http://www.vitalygorn.com/blog/post/2008/01/Handling-Database-easily-with-Visual-Studio-2008.aspx

veya resmi belgeleri için MSDN'yi kontrol

Cevap 09/12/2008 saat 15:03
kaynak kullanıcı

oy
5

SSMS doğrudan veritabanı değişiklikleri izleme çeşitli 3. parti araçları kullanarak mümkündür. ApexSQL Kaynak Kontrolü otomatik komut sürümlemedeki dahil herhangi bir veritabanı nesnesi. Kesinleştirmeler otomatik araç tarafından gerçekleştirilemez. Bunun yerine, kullanıcı değişiklikler işlenen hangi seçmek gerekiyor.

Bir depo değişiklikleri alırken, ApexSQL Kaynak Kontrolü SQL veritabanı tutarlılığı farkındadır. Böylece, bu yüzden bir işlemlerde sarılmış olacak tüm bağımlı nesneler dahil bir senkronizasyon komut dosyaları yaratacak, ya tüm değişiklikler durumda herhangi bir hata karşılaşıldığında ya da seçilen değişikliklerin hiçbiri uygulanır içinde uygulanacaktır. Her durumda, veritabanı bütünlüğü etkilenmeden kalır.

Cevap 07/12/2017 saat 15:12
kaynak kullanıcı

oy
5

Ben görsel bir stüdyo veritabanı projesi de kaynak kontrol ikilem için makul bir çözüm olduğunu düşünüyorum söylemek gerekir. kurulduktan Eğer doğru bir IDE'den veritabanıyla komut dosyalarını çalıştırabilirsiniz. senaryonuz eskiyse, son olsun DB karşı çalıştırın. Sadece bir kez de sen, yeni nesneler elle de bu komut dosyasına eklenmelidir gerekirse tüm nesneleri yeniden bir komut dosyası var ama

Her tablo, proc gibi ve kendi dosyasında olmak çalışır.

Cevap 09/12/2008 saat 15:19
kaynak kullanıcı

oy
3

Bir yoksul adamın çözüm koduyla birlikte SVN deposuna işlediği dosyayı bir dosyaya son db şema dışarı döker önceden taahhüt kanca komut dosyası eklemek ve var olacaktır. Daha sonra, herhangi bir revizyon dan db şema dosyaları diff yapabilirsiniz.

Cevap 09/12/2008 saat 15:01
kaynak kullanıcı

oy
1

tüm değişiklikleri sürüm anda komut dosyaları tarafından yapılır ve komut sürüm kontrol sistemi tutulur: Bizim ortamında, elle DB hiç değişmez. Bu prosedürün önemli bir kısmı tüm komut dosyaları veri kaybı olmadan aynı DB komut İdempotent var?) karşı tekrar çalıştırılabilir emin olmaktır. Eğer bir sütun eklerseniz Örneğin, sütun zaten varsa hiçbir şey yapmıyorsunuz emin olun.

hakkında Yorumunuz "önerileri bazı prosedürü takip etmek dev gerektiren kusurun var" Gerçekten gammaz olduğunu. Bu bir özelliktir, bir kusur değil. Sürüm kontrolü aşağıdaki prosedürlerde geliştiriciler yardımcı olur ve prosedürler daha az ağrılı hale getirir. Eğer prosedürleri takip etmek istemiyorsanız, size sürüm kontrolü gerekmez.

Cevap 09/12/2008 saat 17:32
kaynak kullanıcı

oy
1

Sıfırdan kendi Rolling çok yapılabilir olması, ancak böyle bir sql karşılaştırma aracını kullanırsanız olmaz Redgate SQL SDK karşılaştır sadece bu dosyaları kontrol sonra istediğini yarım rulo çok uzun zaman alır ve olmaz sizin için değişiklik dosyaları oluşturmak için kaynak denetime. Kendimi sadece birkaç saat içinde canlı sistemlere geliştirme sistemlerinden değişiklikleri güncellemek için Benzer bir şey yuvarlandı.

Cevap 09/12/2008 saat 15:34
kaynak kullanıcı

oy
1

SQL2000 yılında o kendi dosyasına her nesneyi oluşturmak , ardından Kaynak denetime hepsini kontrol. Kaynak denetim değişiklik geçmişini halletsin.

SQL 2005'te, ayrı dosyalar halinde tüm nesneleri oluşturmak için kod biraz yazmak gerekir.

Cevap 09/12/2008 saat 15:04
kaynak kullanıcı

Cevap 09/12/2008 saat 15:03
kaynak kullanıcı

oy
1

Sadece tam SQL-CREATEDB-açıklamaya ek SQL-alter-Beyanı taahhüt.

Cevap 09/12/2008 saat 15:01
kaynak kullanıcı

oy
0

Insert güncelleme gibi tüm değişiklik izlemek ve silmek için orada SVN için yükü bir sürü olacaktır. Şema değiştirir (oluşturun, damla, değiştirmek) gibi sadece ddl değişikliklerini izlemek için iyidir. Bir masa ve bu tabloya veri eklemek için bir trgger oluşturarak kolayca izleme Bu Şeması yapabilirsiniz. Eğer u bu tablodan sorgulayarak değişim durumunu alabilirsiniz zaman istersen var örneğin bir sürü vardır burada ve burada

Cevap 26/06/2012 saat 16:02
kaynak kullanıcı

oy
0

Biz güncellemeleri veritabanları özel bir araç geliştirdi. veritabanı şeması sonra okunur ve aracı tarafından işlenir bir veritabanı bağımsız XML dosyasında saklanır. şema SVN'de depolanır ve biz değiştirildi göstermek için uygun bir yorum ekleyin. Bu bizim için oldukça iyi çalışıyor.

çözümün bu tür çoğu projeler için kesinlikle overkill iken, kesinlikle zamanlarda hayatını kolaylaştırıyor.

Cevap 18/09/2009 saat 19:15
kaynak kullanıcı

oy
0

Eğer .NET kullanarak ve yaklaşım Raylar gibi Göçler ile sürer ise, o zaman ben öneriyoruz Migrator.Net .

Ben buldum güzel öğretici Visual Studio'da kurma yoluyla yürür. O da başvurmak için bir örnek proje sağlar.

Cevap 18/09/2009 saat 19:03
kaynak kullanıcı

oy
0

bir projede ben veritabanında tüm önemli verileri otomatik harici yerlerden yeniden oluşturulabilir tasarımında büyük dikkatle düzenlenmiş. eksik ise açılışta uygulama veritabanı oluşturur ve uygulama kaynak kodunda bir şemayı kullanan, dış veri kaynaklarından doldurur (ve dolayısıyla uygulama ile sürüm). veritabanı deposu adı (çoğu veritabanı yöneticileri birden fazla veritabanı izin rağmen sqlite dosya adı) bir şema sürümü, ve biz bir şema değişikliği işlemek her ulaştığında şema sürümü artırır. yeni bir veritabanı deposu otomatik olarak oluşturulur ve doldurulur farklı bir şema ile yeni bir sürüme uygulamayı yeniden başlattığınızda bu demektir. O zaman eski sürümün yeni çalışma eski veritabanı deposu kullanacak olan eski bir şemaya bir dağıtım dönmek zorunda, bu yüzden sorun çıkması halinde en hızlı notunu düşürdü yapmak almalısınız.

Esasen, veritabanı sebat avantajları, işlem güvenliği, statik yazarak ile geleneksel bir uygulama yığın gibi davranır (kullanışlı biz Python kullanmak beri) ve teklik kısıtlamaları. Ancak, veritabanı silme ve yeniden başlama konusunda hiç endişelenmeyin ve insanlar o zaman pek bir süreç devletin kesmek gibi, sonraki dağıtım üzerinde döndürülür alacak veritabanında bazı manuel kesmek deneyin olursa geri alacak biliyorum Bir sonraki yeniden başlatmada.

biz sadece veritabanı Dosya geçiş ve uygulamayı yeniden başlatın beri herhangi bir taşıma komut gerek yoktur ve kendini yeniden oluşturur. Bu uygulama örneklerini Her müşteri için bir veritabanını kullanmak için kanatlı bir olduğunu yardımcı olur. Ayrıca veritabanı yedekleme ihtiyacını azaltır.

Harici kaynaklardan veritabanı oluşturma, uygulama aşağı kalabilmelerini sağlayacak uzun sürerse bu yaklaşım çalışmaz.

Cevap 15/12/2008 saat 14:14
kaynak kullanıcı

oy
0

Bizim DBA periyodik SVN'de ne karşı eşya kontrol ve kaynak denetimi altında herhangi bir nesneyi silin. devlopers tekrar kaynak denetiminde bir şey koymak asla unutmam önce sadece bir kez gerçekleşir.

Bizim Devs prod hakları yok olarak biz de bu zorlamak için kolay herkes bir senaryo olmadan eşya nesneleri taşımak için izin vermez.

Cevap 09/12/2008 saat 15:31
kaynak kullanıcı

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more