Sürüm SQL Server veritabanı

oy
288

Ben sürüm kontrolü altında benim veritabanları almak istiyorum. Herkes herhangi bir tavsiye veya önerilen makaleleri başladı beni zorunda mı?

Hep en azından isteyeceksiniz bazı (orada verileri alumb : kullanıcı türleri ve yöneticiler bahseder). Ben de sık sık performans ölçümleri için oluşturulan deney verilerinin geniş bir koleksiyona isteyeceksiniz.

Oluştur 01/08/2008 saat 19:33
kaynak kullanıcı
Diğer dillerde...                            


29 cevaplar

oy
169

Martin Fowler konuyla ilgili benim favori makale yazdı http://martinfowler.com/articles/evodb.html . Ben şema olarak sürüm kontrolü altında döker koymak için tercih alumb ve benim üretim veritabanını yükseltmek için kolay bir yol istiyorum çünkü diğerleri düşündürmektedir.

Tek bir üretim veritabanı örneği olacak bir web uygulaması için, iki teknikleri kullanın:

Veritabanı Yükseltme Scripts

Bir dizi veri tabanı N + 1 sürüm N şemadan hareket ettirmek için gerekli DDL içeren komut yükseltin. (Bunlar, sürüm kontrol sisteminde gidin.) Bir _version_history_ tablo gibi bir şey

create table VersionHistory (
    Version int primary key,
    UpgradeStart datetime not null,
    UpgradeEnd datetime
    );

Yeni bir girdiyi yeni sürümüne karşılık gelen yükseltme komut çalıştırır her zaman alır.

Bu varolduğundan ve bu veritabanı yükseltme komut dosyaları sadece bir kez çalıştırılır veritabanı şeması hangi sürümünü görmek kolay olmasını sağlar. Yine, bunlar değil veritabanı çöplük. Aksine, her komut temsil değişiklikleri bir sürümden sonrakine geçmek için gerekli. Onlar bunu "yükseltme" için üretim veritabanı için geçerli senaryoyu konum.

Geliştirici Sandbox Senkronizasyon

  1. yedeklemek için bir komut dosyası, sterilize ve bir üretim veritabanı daraltmak. üretim DB her yükseltmeden sonra bu çalıştırın.
  2. Bir komut dosyası geri (ve gerekirse çimdik) bir geliştirici iş istasyonunda yedekleme için. Her geliştirici üretimi DB her yükseltmeden sonra bu komut dosyasını çalıştırır.

Bir uyarı: My otomatik testler, bir şema doğru ama boş veritabanına karşı çalışır, bu nedenle bu danışma mükemmel ihtiyaçlarına uygun olmayacaktır.

Cevap 02/08/2008 saat 18:33
kaynak kullanıcı

oy
42

Kırmızı Gate'nin SQL karşılaştırın ürünü sadece nesne düzeyinde karşılaştırmalar yapmak ve bundan değişim komut dosyaları oluşturmasına olanak sağlar, ama aynı zamanda bir [objectname] .Sql yaratılış, sen nesne türüne göre düzenlenen bir klasör hiyerarşisine veritabanı nesneleri ihracat sağlayan bu dizindeki nesne başına komut dosyası. Nesne tipi hiyerarşi şu şekildedir:

\ Fonksiyonlar
\ Güvenlik
\ Güvenlik \ Rolleri
\ Güvenlik \ Şemalar
\ Güvenlik \ Users
\ Saklanan Prosedürler
\ Tablolar

Değişiklikleri yaptıktan sonra aynı kök dizinine komut dökümü varsa, SVN repo güncellemek için bu kullanın ve her biri ayrı ayrı itiraz çalışan bir geçmişi tutabilirsiniz.

Cevap 26/08/2008 saat 08:23
kaynak kullanıcı

oy
38

Bu gelişmeyi çevreleyen "sert sorunları" biridir. Bildiğim kadarıyla hiçbir mükemmel çözüm vardır biliyorum.

Yalnızca veritabanı yapısını değil, veri depolamak gerekiyorsa SQL sorguları gibi veritabanı verebilirsiniz. (. Enterprise Manager: Sağ veritabanında tıklayın - Ben ayarlanması önerilir> SQL komut dosyası oluşturun seçenekleri sekmesinde "nesne başına bir dosya oluşturmak") Daha sonra svn için bu metin dosyaları işlemek ve svn'nin fark ve günlük fonksiyonları yararlanabilir.

Bunun birkaç parametre alır ve veritabanını kurar Bir Toplu komut dosyası ile birlikte bağlı olması. Ayrıca kullanıcı türleri ve yönetici kullanıcı gibi varsayılan veri girmek bazı ek sorgular ekledi. (Bu konuda daha fazla bilgi isterseniz, şey yayınlar ve erişilebilir bir yere senaryoyu koyabilirsiniz)

Siz de tüm verileri tutmak gerekiyorsa, ben veritabanının kadar bir geri tutmak ve Redgate (kullanılmasını öneriyoruz http://www.red-gate.com/ karşılaştırmalar yapmak) ürünleri. Onlar ucuza gelmez ama her kuruşa değer.

Cevap 01/08/2008 saat 20:28
kaynak kullanıcı

oy
37

Öncelikle, sizin için doğru sürüm kontrol sistemi seçmek gerekir:

  • Merkezi Sürüm Kontrol sistemi - Kullanıcılar / check out onlar dosyalar üzerinde çalışmak ve dosyalar tek merkezi sunucuda tutuluyor sonra / önce check-in standart bir sistem

  • Dağıtılmış Sürüm Kontrol sistemi - depo klonlanmış olan bir sistem ve her klon aslında depo dolu yedekleme, bu nedenle herhangi bir sunucu çöküyor, o zaman herhangi klonlanmış depo kullanılıp kullanılamayacağını ihtiyaçlarınız için doğru sistemi seçtikten sonra geri yüklemek için :, kurulum için bu aşağıdaki makalede açıklanmıştır Tüm her sürüm kontrol sisteminin çekirdeğidir depo gerekir http://solutioncenter.apexsql.com/sql-server-source-control-part-i-understanding -source-control-temelleri /

Bir depo kurduktan sonra, ve bir merkezi versiyon kontrol sistemine bir çalışma klasörü durumunda, okuyabilir bu yazıyı . Bu nasıl gösterdiğini kullanarak bir geliştirme ortamı Kur kaynak kontrolü için:

  • MSSCCI sağlayıcı üzerinden, SQL Server Management Studio,

  • Visual Studio ve SQL Server Veri Araçları

  • Bir 3. parti aracı ApexSQL Kaynak Kontrolü
Cevap 24/06/2015 saat 10:36
kaynak kullanıcı

oy
22

İşte Kırmızı Kapısı'nda bir araç sunuyoruz SQL Kaynak Denetimi TFS veya SVN deposu ile veritabanı bağlamak için SQL karşılaştırın teknolojisini kullanır. Bu araç SSMS dahil edilir ve artık sağlayan dışında normalde, nesneleri işlemeye arar gibi çalışmanıza olanak tanır.

Bir göçler temelli yaklaşıma (otomatikleştirilmiş dağıtımlar için daha uygun) için, teklif ReadyRoll oluşturur ve bir Visual Studio projesi olarak artan komut kümesi yönetir.

SQL kaynak denetimi ise statik veri tablolarını belirtmek mümkündür. Bu ifadeleri YOKSAY INSERT gibi kaynak denetimi saklanır.

Test verileri bahsediyorsan, size bir aletle veya sizin tanımladığınız bir dağıtım sonrası komut dizisi ile test verisi üretmek ya tavsiye ederim, ya da sadece dev çevre için bir üretim yedeği geri yükleyin.

Cevap 01/07/2010 saat 10:10
kaynak kullanıcı

oy
20

Sen Liquibase (bakmak isteyebilirsiniz http://www.liquibase.org/ ). Aracı kendisi kullanmak bile o veritabanı değişim yönetimi veya oldukça iyi üstlenmeden kavramlarını ele alır.

Cevap 16/09/2008 saat 19:16
kaynak kullanıcı

oy
17

Ek bir öneri ve bir uyarı ile, RedGate araçları tavsiye herkes için 1.

SqlCompare da terbiyeli belgelenmiş API vardır: böylece, örneğin, kaynak kontrollü komut, tarihi üzerinde CI entegrasyon test veritabanı ile klasörü eşitler bir konsol uygulaması yazan biri kendi komut klasöründen şemaya bir değişiklik kontrol ettiğinde, böylece otomatik eşleştirme uygulaması kod değişikliği ile birlikte dağıtılan oluyor. Bu db paylaşılan gelişme DB (yarısı bize, bence :)) kadar kendi yerel değişiklikleri çoğaltım konusunda unutkan olan geliştiricileri ile boşluğu kapatmak yardımcı olur.

Bir uyarı aksi bir scripted solüsyon veya birlikte RedGate araçları soyutlama yatan SQL gerçekleri hakkında unutmak kolaydır yeterince pürüzsüz olmasıdır. Bir tablodaki tüm sütunları yeniden adlandırırsanız, SqlCompare yeni sütunlara eski sütunları eşleştirmek için ve tablodaki tüm verileri düşecek hiçbir yolu yoktur. Bu uyarılar üretecektir ama insanlar bunu geçmiş tıklayın gördüm. Yalnızca DB sürüm otomatik ve şimdiye kadar yükseltebilirsiniz olduğunu, sanırım, yapım değer burada genel bir nokta var - soyutlamalar çok sızıntı yapıyor.

Cevap 15/10/2008 saat 10:44
kaynak kullanıcı

oy
14

VS 2010 ile Veritabanı projesini kullanın.

  1. Senaryo dışarı veritabanı
  2. senin db sunucuda komut değişiklik veya doğrudan yapın
  3. Veriler> Şema karşılaştırın kullanarak senkronize

Mükemmel bir DB sürüm çözümünü yapar ve DB senkronize bir esinti var yapar.

Cevap 25/02/2011 saat 21:18
kaynak kullanıcı

oy
14

Biz kullanmak DBGhost bizim SQL veritabanını yönetmek için. Sonra sürüm kontrolü yeni bir veritabanı oluşturmak için komut koymak ve yeni bir veritabanı oluşturmak veya sürüm kontrolü şemaya herhangi varolan veritabanını yükseltmek olacak ya. Eğer (yine örneğin bir sütunun veri türünü değiştirmek ve veri dönüştürmek gerekir istiyorsanız bunun yolu da rağmen) değişiklik komut dosyaları oluşturma konusunda endişelenmenize gerek yok Bu şekilde.

Cevap 07/08/2008 saat 22:12
kaynak kullanıcı

oy
12

Size herhangi bir tek veritabanı yükseltme böylece değişim komut uyarlama kontrolü içine veritabanı komut dosyalarını kaydetmek için iyi bir yaklaşımdır. Ayrıca tüm değişiklik komut dosyalarını uygulamak zorunda kalmadan tam bir veritabanı oluşturmak, böylece farklı sürümleri için şemaları kaydetmek isteyebilirsiniz. el islerini yapmak zorunda kalmamak için komut Handling otomatik edilmelidir.

Her geliştirici için ayrı bir veritabanı var ve paylaşılan bir veritabanını kullanmak değil onun önemli düşünüyorum. geliştiriciler diğer geliştiricilerin bağımsız test durumları ve geliştirme aşamalarını oluşturmak elde edebilirsiniz.

ayrıca otomasyonun aracı geliştirme ve hangi tabloları vb versiyon kontrol veri ve içermelidir hangi durumda hangi veritabanları söyler veritabanı meta, işlemek için araçlara sahip olmalıdır.

Cevap 24/09/2008 saat 07:11
kaynak kullanıcı

oy
11

Ayrıca göçler çözümü bakabilir. Bunlar C # kodu veritabanı şemasını belirlemek ve MSBuild kullanarak yukarı ve aşağı veritabanı sürümü sarın.

Şu anda kullanarak DbUp ve iyi çalışıyor.

Cevap 06/08/2008 saat 23:51
kaynak kullanıcı

oy
10

Eğer hedef çevreye veya kısıtlamalar hakkında herhangi bir özelliklerini söz etmedi, bu nedenle bu tamamen geçerli olmayabilir ... ama etkili gelişen DB şema izlemek için bir yol arıyoruz ve kullanma fikrine olumsuz değilerdir eğer Yakut, activerecord en göçler sağ biçilmiş kaftan bulunmaktadır.

Taşıma programlama Ruby DSL kullanarak veri tabanı dönüşümlerinin elde; Her transformasyon uygulanmış ya da (genellikle) Eğer zaman içinde herhangi bir noktada DB şema farklı bir sürümüne geçmek için izin geri dönülebilir. Bu dönüşümleri tanımlayan dosya kaynak kodunun başka parçası gibi sürüm kontrolü kontrol edilebilir.

Göçler bir parçası olduğu için ActiveRecord , genellikle tam yığın raylar uygulamalarda kullanım alanı bulur; Ancak, minimum çabayla Raylar ActiveRecord bağımsız kullanabilirsiniz. Bkz burada Raylar dışında AR'nin göçler kullanarak daha detaylı tedavi için.

Cevap 02/08/2008 saat 18:54
kaynak kullanıcı

oy
9

Her veritabanı kaynak kodu denetimi altında olmalıdır. Daha sonra herhangi bir kaynak kontrol sistemine eklenebilir dosya, - ve "yapılandırma verileri" - Ne eksik olduğunu otomatik olarak komut tüm veritabanı nesnelerini bir araçtır. SQL Server kullanıyorsanız, o zaman benim çözüm burada: http://dbsourcetools.codeplex.com/ . İyi eğlenceler. - Nathan.

Cevap 07/07/2009 saat 13:58
kaynak kullanıcı

oy
8

Basit.

  1. Baz projesi hazır olduğunda o zaman tam veritabanı komut dosyası oluşturmak gerekir. Bu komut dosyası SVN kararlıdır. İlk versiyonu.

  2. Bundan sonra tüm geliştiricilerin değişiklik komut dosyaları oluşturur (ALTER ..., yeni tablolar, SPROCs, vs).

  3. Geçerli sürümü gerektiğinde o zaman tüm yeni değişiklik komut dosyalarını yürütmek gerekir.

  4. Uygulamanın üretime bırakıldığında o zaman 1'e geri dönmek (ama sonra elbette ardışık versiyonu olacaktır).

Nant o değişiklik komut dosyalarını yürütmek için yardımcı olacaktır. :)

Ve Hatırla. disiplin olduğunda her şeyi iyi çalışır. Veritabanı değişim kodu daha sonra ilgili işlevleri işlediği her seferde çok kararlıyız.

Cevap 16/05/2009 saat 12:31
kaynak kullanıcı

oy
7

biraz daha hızlı, sen sysobjects sürüm bilgileri kullanarak nesneleri son zamandan bu yana değişmiş hangi görebileceğiniz bir kaynak kod kontrol sistemine dökümü yapmak.

Kurulum: Eğer bunu kontrol son kez (ilk çalıştırmada boş) sürüm bilgilerini tutmak için adım adım kontrol etmek istediğiniz her veritabanındaki bir tablo oluşturun. Eğer bütün veri yapısını yeniden taramak istiyorsanız bu tabloyu temizleyin.

IF ISNULL(OBJECT_ID('last_run_sysversions'), 0) <> 0 DROP TABLE last_run_sysversions
CREATE TABLE last_run_sysversions (
    name varchar(128), 
    id int, base_schema_ver int,
    schema_ver int,
    type char(2)
)

Normal çalışma modu: Bu sql sonuçlarını almak ve ilgilendiğiniz sadece olanlar için sql komut dosyaları oluşturmak ve seçeceğiniz bir kaynak denetimi içine koyabilirsiniz.

IF ISNULL(OBJECT_ID('tempdb.dbo.#tmp'), 0) <> 0 DROP TABLE #tmp
CREATE TABLE #tmp (
    name varchar(128), 
    id int, base_schema_ver int,
    schema_ver int,
    type char(2)
)

SET NOCOUNT ON

-- Insert the values from the end of the last run into #tmp
INSERT IGNORE  #tmp (name, id, base_schema_ver, schema_ver, type) 
SELECT name, id, base_schema_ver, schema_ver, type FROM last_run_sysversions

DELETE last_run_sysversions
INSERT IGNORE  last_run_sysversions (name, id, base_schema_ver, schema_ver, type)
SELECT name, id, base_schema_ver, schema_ver, type FROM sysobjects

-- This next bit lists all differences to scripts.
SET NOCOUNT OFF

--Renamed.
SELECT 'renamed' AS ChangeType, t.name, o.name AS extra_info, 1 AS Priority
FROM sysobjects o INNER JOIN #tmp t ON o.id = t.id
WHERE o.name <> t.name /*COLLATE*/
AND o.type IN ('TR', 'P' ,'U' ,'V')
UNION 

--Changed (using alter)
SELECT 'changed' AS ChangeType, o.name /*COLLATE*/, 
       'altered' AS extra_info, 2 AS Priority
FROM sysobjects o INNER JOIN #tmp t ON o.id = t.id 
WHERE (
   o.base_schema_ver <> t.base_schema_ver
OR o.schema_ver      <> t.schema_ver
)
AND  o.type IN ('TR', 'P' ,'U' ,'V')
AND  o.name NOT IN ( SELECT oi.name 
         FROM sysobjects oi INNER JOIN #tmp ti ON oi.id = ti.id
         WHERE oi.name <> ti.name /*COLLATE*/
         AND oi.type IN ('TR', 'P' ,'U' ,'V')) 
UNION

--Changed (actually dropped and recreated [but not renamed])
SELECT 'changed' AS ChangeType, t.name, 'dropped' AS extra_info, 2 AS Priority
FROM #tmp t
WHERE    t.name IN ( SELECT ti.name /*COLLATE*/ FROM #tmp ti
         WHERE NOT EXISTS (SELECT * FROM sysobjects oi
                           WHERE oi.id = ti.id))
AND  t.name IN ( SELECT oi.name /*COLLATE*/ FROM sysobjects oi
         WHERE NOT EXISTS (SELECT * FROM #tmp ti
                           WHERE oi.id = ti.id)
         AND   oi.type  IN ('TR', 'P' ,'U' ,'V'))
UNION

--Deleted
SELECT 'deleted' AS ChangeType, t.name, '' AS extra_info, 0 AS Priority
FROM #tmp t
WHERE NOT EXISTS (SELECT * FROM sysobjects o
                  WHERE o.id = t.id)
AND t.name NOT IN (  SELECT oi.name /*COLLATE*/ FROM sysobjects oi
         WHERE NOT EXISTS (SELECT * FROM #tmp ti
                           WHERE oi.id = ti.id)
         AND   oi.type  IN ('TR', 'P' ,'U' ,'V'))
UNION

--Added
SELECT 'added' AS ChangeType, o.name /*COLLATE*/, '' AS extra_info, 4 AS Priority
FROM sysobjects o
WHERE NOT EXISTS (SELECT * FROM #tmp t
                  WHERE o.id = t.id)
AND      o.type  IN ('TR', 'P' ,'U' ,'V')
AND  o.name NOT IN ( SELECT ti.name /*COLLATE*/ FROM #tmp ti
         WHERE NOT EXISTS (SELECT * FROM sysobjects oi
                           WHERE oi.id = ti.id))
ORDER BY Priority ASC

Not: Eğer veritabanlarının herhangi bir standart dışı harmanlama kullanırsanız, değiştirmeniz gerekir /* COLLATE */veritabanı harmanlama ile. yaniCOLLATE Latin1_General_CI_AI

Cevap 24/09/2008 saat 13:53
kaynak kullanıcı

oy
7

Uygulamamızı birden RDBMSs arasında çalışmak zorunda olduğundan, biz veritabanı nötr kullanarak sürüm kontrolü bizim şema tanımı depolamak Tork biçimi (XML). Şöyle Ayrıca XML formatında bizim veritabanı için referans veri versiyonu-kontrol ( "İlişki" referans tablolardan biri olduğu):

  <Relationship RelationshipID="1" InternalName="Manager"/>
  <Relationship RelationshipID="2" InternalName="Delegate"/>
  etc.

Daha sonra şema yükseltme ve referans veri sürümü X + 1'e veritabanının versiyonu X gitmek için gerekli olan komut dosyaları yükseltme oluşturmak için yerli araçlarını kullanın.

Cevap 24/09/2008 saat 06:49
kaynak kullanıcı

oy
7

Eğer küçük bir veritabanı var ve sürümü için tüm şey istiyorsanız, bu toplu komut yardımcı olabilir. Bu ayırır sıkıştırır ve Subversion bir MSSQL veritabanı MDF dosyasını kontrol eder.

Eğer çoğunlukla sürüme şema istiyor ve sadece referans verilerinin bir miktar varsa, muhtemelen kullanabilirsiniz Sesaltı Göçler o işlemek için. Fayda kolayca taşımanıza veya belirli bir sürümüne aşağı ki var.

Cevap 07/08/2008 saat 22:21
kaynak kullanıcı

oy
6

Bu, bir süre önce Uygulaması'na yazdı http://sqlschemasourcectrl.codeplex.com/ tarar hangi MSFT SQL db en sıklıkta dökümü otomatik istediğiniz gibi SVN içine nesneler (tablolar, görünümler, procs, fonksiyonlar, sql ayarları). ÇALIŞIYOR bir cazibe gibi. Ben (bana checkins üzerinden uyarı almak için izin verir) unfuddle ile kullanmak

Cevap 23/09/2010 saat 03:35
kaynak kullanıcı

oy
6

biz x64 platformu göç ve eski sürüm göçle kırdı sonra biz versiyonu bizim SQL veritabanına ihtiyaç vardı. Biz bir klasöre SQL tüm nesneleri haritasını için SQLDMO kullanılan bir C # uygulaması yazdı:

                Kök
                    Sunucu adı
                       Veri tabanı ismi
                          Şema nesneleri
                             Veritabanı * tetikler
                                .ddltrigger.sql
                             Fonksiyonlar
                                ..function.sql
                             Güvenlik
                                Roller
                                   Uygulama Rolleri
                                      .approle.sql
                                   Veritabanı Rolleri
                                      .role.sql
                                Şemalar *
                                   .schema.sql
                                Kullanıcılar
                                   .user.sql
                             Depolama
                                Tam Metin Kataloglar *
                                   .fulltext.sql
                             Saklı prosedürler
                                ..proc.sql
                             Eş anlamlı*
                                .synonym.sql
                             Tablolar
                                ..table.sql
                                Kısıtlamalar
                                   ... chkconst.sql
                                   ... defconst.sql
                                endeksleri
                                   ... index.sql
                                Anahtarlar
                                   ... fkey.sql
                                   ... pkey.sql
                                   ... ukey.sql
                                tetikleyiciler
                                   ... trigger.sql
                             Türleri
                                Kullanıcı tanımlı Veri Türleri
                                   ..uddt.sql
                                XML şema koleksiyonları *
                                   ..xmlschema.sql
                             Görünümler
                                ..view.sql
                                endeksleri
                                   ... index.sql
                                tetikleyiciler
                                   ... trigger.sql

Uygulama daha sonra SVN'de depolanan sürüme yeni yazılmış versiyonunu karşılaştırmak istiyorsunuz ve farklılıkları olsaydı o SVN güncelleştirmek istiyorum. Biz SQL'e birçok değişiklik yapmayın çünkü sürecini çalıştıran bir kez gece yeterli olduğunu tespit ettik. Bu önemsediğimiz tüm nesnelere değişiklikleri izleyebiliriz artı bize ciddi sorun olması durumunda bizim tam şema yeniden sağlar.

Cevap 09/10/2008 saat 15:54
kaynak kullanıcı

oy
6

Biz veritabanına değişiklikleri saklamak, veritabanı şemasını saklamıyoruz. Yaptığımız iş veritabanının herhangi bir sürümü için bir değişiklik komut dosyası oluşturmak ve müşteri veritabanlarına uygulamak, böylece şema değişiklikleri saklamak olduğunu. O senaryoyu okudum ve güncellemeleri uygulanması gerekir hangi bilebilir ana uygulama ile dağıtılan alır bir veritabanı programıdır app yazdı. Ayrıca gerektiğinde görüş ve saklanan prosedürleri yenilemek için yeterli smarts vardır.

Cevap 07/08/2008 saat 00:00
kaynak kullanıcı

oy
5

Ben ESV yanıta katılabilir ve o zamanlar kaynak kodunu uzun tarafını muhafaza edilebilecek bir çok basit dosyasında veritabanı güncellemelerini korumaya yardımcı olmak için ise bu kesin nedene biraz proje a başladı. Bu kolay geliştiriciler için güncellemeler yanı sıra UAT ve Üretim verir. aracı SQL Server ve MySQL ama üzerinde çalışır.

Bazı proje özellikleri:

  • şema değişiklikleri verir
  • değer ağaç popülasyonu verir
  • için, örneğin ayrı bir test veri uçlar verir. UAT
  • geri alma seçeneğini sağlar (otomatik değil)
  • SQL server ve MySQL için destek korur
  • Basit bir komut ile sürüm kontrolü haline mevcut veritabanı alma olanağı vardır (sql sunucusu yalnızca ... hala MySQL üzerinde çalışıyor)

Kod google kodu barındırılmaktadır. Bazı fazla bilgi için Google kodunu kontrol edin

http://code.google.com/p/databaseversioncontrol/

Cevap 24/02/2011 saat 19:28
kaynak kullanıcı

oy
5

Biz sadece Team Foundation Server'ı kullanmaya başladı. veritabanı orta büyüklükteki ise, görsel stüdyo veri, veritabanı yeniden düzenleme araçları, veritabanı test çerçevesi ve hatta veri üretme araçları karşılaştırmak, yerleşik karşılaştırmak ile bazı güzel proje entegrasyonları vardır.

Ama, bu modelin çok büyük veya üçüncü şahıs veritabanları (yani şifrelemek nesneler) çok iyi uymuyor. Pekala, ne yaptık sadece bizim özelleştirilmiş nesneleri saklamaktır. Visual Studio / Takım vakıf sunucusu bunun için çok iyi çalışıyor.

TFS Veritabanı baş kemer. Blog

MS TFS sitesi

Cevap 22/08/2008 saat 18:13
kaynak kullanıcı

oy
5

Tipik çözüm bu dosyalar gerekli ve yedek olarak veritabanı dökümü etmektir.

senin geliştirme platformu bağlı olarak, açık-kod eklentileri mevcut olabilir. bunu yapmak için kendi kodunuzu Rolling genellikle oldukça basittir.

Not: Bunun yerine sürüm kontrolü geçirilmesinin taşıdığı yedekleme veritabanı dökümü isteyebilirsiniz. dosyaları (Ben şu anda bir CVS korku hikayesi hatırlatarak ediyorum) sürüm kontrolünde büyük hızlı olsun, ve tüm kaynak kontrol sistemi yavaş hale gelmesine neden olabilir.

Cevap 03/08/2008 saat 02:49
kaynak kullanıcı

oy
4

Ben de prosedürlerin veritabanı genişletilmiş özellikleri ailesi aracılığıyla saklanan veritabanındaki bir sürümünü kullanıyorum. Benim uygulama (örneğin., 1.1 ila 1.2 taşımak), her bir sürüm adımı için komut vardır. konuşlandırılmış zaman, geçerli sürümü bakar ve son uygulama sürümünü ulaşana kadar sonra geçiri teker teker çalışır. Düz 'nihai' sürüme sahip hiçbir komut, temiz bir DB yükseltme bir dizi adım yoluyla dağıtmaya yapar bile dağıtmak yoktur.

Şimdi ne eklemek ister ben yeni ve gelecek VS DB baskısında hakkında MS kampüsünde iki gün önce bir sunum gördüm olmasıdır. Sunum bu konuda özel olarak odaklanmış ve suyun dışına uçuruldu. Kesinlikle yeni tesisler T-SQL komut dosyaları (yaratır), bir çalışma zamanı delta motor tanımlı şema ve kadar kaynak kod entegrasyonu ile delta değiştirir ve entegrasyonu yapıyor ile dağıtım şema karşılaştırmak tutarak şema tanımı odaklandık, bunu kontrol etmelidir ve otomatik yapı damla MSBuild sürekli entegrasyon dahil. Damla yeni bir dosya türünü içerecek gerçek 'deltalar' yapmak ve dağıtım çalıştırabilir dağıtım sitesinde ve bir komut satırı aracı alınabilir .dbschema dosyaları. Ben VSDE indirmeleri bağlantılarını içeren bu konuyla ilgili bir blog yazısı var, onları kontrol etmelidir: http://rusanu.com/2009/05/15/version-control-and-your-database/

Cevap 15/05/2009 saat 20:26
kaynak kullanıcı

oy
4

Bir süre önce DMO ve VSS bütün bir db kapalı senaryosunu ve VSS içine almak için nesneleri kullanılan bir VB bas modülü buldum. Bir VB Script çevirdi ve onu yayınlanmıştır burada . Kolayca VSS aramaları almak ve tüm komut dosyalarını oluşturmak için DMO malzeme kullanmak ve sonra onları kontrol etmek VBScript çağıran aynı toplu dosyasından SVN diyebiliriz?

Dave J

Cevap 16/09/2008 saat 18:55
kaynak kullanıcı

oy
3

Onun çok eski bir soru, ancak birçok şu anda bile bunu çözmek için çalışıyoruz. Tek yapmaları gereken tüm Visual Studio Veritabanı Projeleri hakkında araştırma etmektir. Bu olmadan, herhangi bir veritabanı geliştirme çok zayıf görünüyor. Kod kuruluştan dağıtıma sürüm için, her şeyi kolaylaştırır.

Cevap 23/06/2015 saat 11:26
kaynak kullanıcı

oy
2

DBGhost göz atın http://www.innovartis.co.uk/ . Şimdi 2 yıldır otomatik bir biçimde kullanmış ve o inşaat büyük. Bizim DB bir Java gibi çok gerçekleşmesini kurar veya C inşa veritabanı dışında olur verir. Ne demek istediğimi biliyorsun.

Cevap 02/11/2009 saat 23:17
kaynak kullanıcı

oy
2

Tecrübelerime göre çözüm ikilidir:

  1. Geliştirme sırasında birden geliştiriciler tarafından yapılır geliştirme veritabanına değişiklikleri işlemek gerekir.

  2. Müşterilerin sitelerinde veritabanı yükseltmeleri işlemek gerekir.

1. işlemek amacıyla güçlü bir veritabanı fark / birleştirme aracı gerekir. iyi araç çakışmaları manuel işlenmeyen çözmek için izin verirken mümkün olduğunca otomatik birleştirme gerçekleştirmek gerekir.

mükemmel bir araçtır dikkate BAZ veritabanına göreli Onlarınki veritabanı ve MADEN veritabanında yapılan değişiklikleri, getiren 3 yollu birleştirme algoritması kullanarak operasyonlarını birleştirme tanıtıcı olmalıdır.

Ben SQLite veritabanları için manuel birleştirme desteği sağlar ticari bir aracı yazdı ve şu anda SQLite için 3 yollu birleştirme algoritması için destek ekliyorum. Şu adresten kontrol edin http://www.sqlitecompare.com

2. işlemek amacıyla yerinde yükseltme çerçeve gerekir.

Temel fikir yeni bir SQL şemaya varolan bir SQL şema yükseltmek ve mevcut her DB kurulum için bir yükseltme yolu inşa edebilirsiniz bilen bir otomatik yükseltme çerçeve geliştirmektir.

Konuyla ilgili benim makaleyi inceleyin http://www.codeproject.com/KB/database/sqlite_upgrade.aspx ben neden bahsettiğimi genel bir fikir edinmek için.

İyi şanslar

Liron Levi

Cevap 06/08/2009 saat 11:28
kaynak kullanıcı

oy
1

Ben senin veritabanı için bir sürüm kontrol sistemi doğaçlama karşılaştırma araçlarını kullanarak öneririm. İyi bir alternatif olan xSQL Şema karşılaştırın ve xSQL Veri karşılaştırın .

Amacınız sürüm kontrolü altında sadece veritabanının şeması sahip olmaktır Şimdi, eğer sadece xSQL Şema şemanın xSQL Snapshots üretmek ve sürüm kontrolü bu dosyaları eklemek için karşılaştırın kullanabilirsiniz. Daha, geri dönmek veya belirli bir sürümüne güncelleme sadece hedef sürümü için anlık olan veritabanının güncel sürümünü karşılaştırın.

siz de sürüm kontrolü altında verilere sahip istiyorsanız Eyvah, sen xSQL Veri size veritabanı için değişiklik komut dosyaları oluşturmak için karşılaştırın kullanmak ve sürüm kontrolü .sql dosyaları ekleyebilirsiniz. Daha sonra istediğiniz herhangi bir sürümüne / güncellemeyi geri bu komut dosyalarını yürütebilir. 'Geri döndürme' işlevi için Sürüm 3 Version 2 olarak 'güncelleme' işlevselliği için aynı yapacak çalıştırıldığında, tam tersini yapıyorsun değişiklik komut dosyaları oluşturmak için gereken değişim komut dosyaları oluşturmak gerektiğini unutmayın.

Son olarak, bazı temel toplu programlama becerileri ile size xSQL Şeması'nın komut satırı sürümlerini kullanarak tüm süreci otomatik hale karşılaştırın ve xSQL Veri karşılaştırın edebilirsiniz

Yasal Uyarı: xsql bağlı ediyorum.

Cevap 10/01/2017 saat 16:16
kaynak kullanıcı

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