2008-09-22 16 views

cevap

1
pencere yükleyicisi ile bütünleşme konusunda emin

değil ama Kızıl Geçit SQL Packager

+0

Kırmızı Kapısı ... Onları kontrol öneriyoruz SQL Server ile çalışmak için harika araç vardır burada daha iyi bir SQL veri tabanlarına bazı kuralları vardır. – mattruma

+0

Paraya mal olur. – Shimmy

0

InstallShield bir yüklemenin bir parçası olarak SQL programları çalıştırma sağlar içine görünebilir. Yine de denemedim, sadece son baktığımda GUI üzerinde olduğunu hatırla!

0

SubSonic'in migrations içine bakmak isteyebilirsiniz. Öncelikle, DB'nizi güncellemek için harika bir yol. İkincisi, aynı betiklerin bir yükleyiciden nasıl çalıştırılacağını anlamak çok zor olmamalı.

4

Deneyimlerim arasında, yazılımınız yükleme zamanından ziyade veritabanına bağlandığında db şema güncellemelerini yapmak daha iyidir. Şunları yapmak istiyorum:

  • böyle bir guid
  • gibi benzersiz bir tanımlayıcı, her şema değişikliği tanımlayın bir kaynak haline derlenmiş örneğin size ürün ile uygulayabileceğiniz tüm değişikliklerin listesini ekleyin Yapınızda sırasında
  • siz, veritabanına bağlanmak herhangi bir değişiklik gerekli olup olmadığını görmek için bu tabloyu taramak zaman uygulanmış olan şema değişikliklerin bir listesini tutmak için veritabanında bir tablo var

Bu, çalışan kodunuzdan yapabilecek kadar basit, ancak yükleyicinizde bu kadar kolay değil.

+0

Ve iki kullanıcı uygulamayı aynı anda çalıştırırsa ve ikisi de güncelleştirmeyi uygulamayı dener ...? – Matt

+0

Bunu halletmenin birkaç yolu var. Her bir db değişikliğini tamamen idempotent olarak yazarak yönetiyorum - "column_exists = 0 ise sütun ekleyin" gibi bir çok kod var. Ayrıca bir yerde 'devam eden' yükseltmeler 'olabilir. –

+0

SQL Server gibi bazı veritabanı motorları, güncelleştirmelerin bir işlemin parçası olarak çalıştırılmasına izin verir; bu, birden çok kullanıcı güncelleştirmeyi paralel olarak çalıştırırsa veri tutarlılığını sağlamaya yardımcı olur (ikinci kullanıcı bazı hatalarla sonuçlanır; geri alma). – Lucero

0

Yazılımınızın her sürümü için bir takım veritabanı güncellemelerine sahip olduğunuzu düşünüyorum. Bu güncellemeleri, yazılımınızın yeni sürümü ilk kez başlatıldığında test edilmek üzere bir T-SQL talimatı olarak neden yazmıyorsunuz? Veritabanınızdaki bağlantıyı yazılımınızdan açın ve herhangi bir SELECT veya UPDATE komutunu gönderirken DDL talimatlarını gönderin. Ben de Jack Paulsen'i öneren bir şeye benzeyeceğim: bu T-SQL talimatlarının bir listesini bir çift tanımlama sistemi ile sürdürmek: Biri veritabanı/yazılım sürümüne bağlı (benzersiz bir tanımlayıcı olabilir), diğeri (sayı) senin T- bakın ALTER, damla tam açıklaması için

//instruction 1, batch instructions for version#2.162 
USE myDatabase 
GO 
ALTER TABLE myTable 
    ADD myColumn uniqueIdentifier Null 
GO 
//instruction 2, batch instructions for version#2.162 
USE myDatabase 
ALTER TABLE myTable 
    ADD CONSTRAINT myTable_myColumn FOREIGN KEY (myColumn) ... 
GO 

ve talimatları CREATE:

Örnek: (talimat 2 talimatı 1 önce idam edilemez benim örneğe bakın) bir seri sırayla talimatları tutmak SQL yardımı Sadece (örneğin) o alanı silmeden önce bir alana bağlı olan Dizinleri ve Kısıtlamaları silmek için yeterince dikkatli olun.

Sen elbette kontrol Hatta daha karmaşık bir şey düşünebilirsiniz, eklenen sütunlar için vs.

değerlerini hesaplamak için bazı ekstra GÜNCELLEME talimatları ekleyebilirsiniz eğer veritabanı sürümü 2. yol açtı önceki yükseltme adımlar (.161) doğru şekilde uygulandı.

Tavsiyem: bu T-SQL yönergelerini yazarken, aynı zamanda "karşı taraflar" ın da izini sürdürebilirsiniz, böylece istediğiniz zaman (hata ayıklama zamanı) veritabanı yapınızı bir önceki sürüme indirgeyebilirsiniz.

2

Adam Cogan, ilk güncellemenin ötesinde her güncellemeyi kaydetmek için kullanılan bir yama tablosu oluşturulmasını önerir. Şemanızı SSMS veya Enterprise Manager üzerinden değiştirmek yerine, her değişikliği uyguladığınızdan emin olun ... her iki uygulama da değişikliklerinizi betimlemenize ve daha sonra bunları uygulamamanıza izin verir. Komut dosyalarını dosyalara kaydedin (büyük olasılıkla bunları kaynak olarak ekleyin) ve daha sonra her çalıştırdığınızda yamaları kontrol edin.

Adam

http://www.ssw.com.au/ssw/Standards/Rules/RulesToBetterSQLServerDatabases.aspx