Databáze verzování SQL Server

hlasů
288

Chci se dostat mé databáze pod kontrolou verzí. Má někdo nějakou radu nebo doporučených článků na abych začal?

Vždycky budu chtít mít alespoň nějaké data tam (jako alumb zmiňuje: typy uživatelů a administrátorů). Budu také často chtějí velkou sbírku generovaných testovacích dat pro měření výkonnosti.

Položena 01/08/2008 v 19:33
zdroj uživatelem
V jiných jazycích...                            


29 odpovědí

hlasů
169

Martin Fowler napsal můj oblíbený článek na toto téma, http://martinfowler.com/articles/evodb.html . I rozhodnout, že nebudou dát schéma skládky v rámci řízení verzí jako alumb a jiní navrhnou, protože chci, snadný způsob, jak upgradovat své produkční databáze.

Pro webové aplikace, kde budu mít jednu instanci databáze produkce, já používám dva postupy:

Database upgrade skripty

Databáze sekvencí inovovat skripty, které obsahují DDL nutné posunout schéma z verze N N + 1. (Ty jdou v systému pro správu verzí.) A _version_history_ stůl, něco podobného

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

dostane nový záznam pokaždé, když upgrade skript spuštěn, který odpovídá na novou verzi.

Tím je zajištěno, že je snadné pochopit, jakou verzi databázového schématu existuje a že upgrade databáze skripty jsou spustit pouze jednou. Opět se jedná o ne databáze skládek. Spíše každý scénář představuje změny nezbytné pro přechod z jedné verze na druhou. Jsou to skript, který uplatníte databáze produkce „upgrade“ ji.

Synchronizace Sandbox Developer

  1. Skript pro zálohování, dezinfikovat, a zmenšit produkční databázi. Spustit tento po každém přechodu na výrobu DB.
  2. Skript pro obnovení (a vyladit, pokud je to nutné) zálohu na pracovní stanici vývojáře. Každý vývojář spustí tento skript po každém přechodu na výrobu DB.

Námitka: Moje automatizovaných testů běžet proti schématu správné, ale prázdnou databázi, takže tato rada nebude dokonale vyhovovat vašim potřebám.

Odpovězeno 02/08/2008 v 18:33
zdroj uživatelem

hlasů
42

Red Gate SQL Porovnat výrobek nejen umožňuje provádět srovnání na úrovni objektů, a generovat změny skripty, ale také umožňuje exportovat databázové objekty do hierarchie složek organizované podle typu objektu, s jedním [objectname] .sql vytvoření script za objekt v těchto adresářích. Hierarchie typ-objektu je takhle:

\ Funkce
\ Security
\ Security \ Role
\ Security \ schémata
\ Security \ Users
\ uložené procedury
\ stoly

Máte-li vypsat skripty se stejným kořenového adresáře po provedení změn, můžete použít k aktualizaci SVN repo, a zachovat průběžný historii každého objektu samostatně.

Odpovězeno 26/08/2008 v 08:23
zdroj uživatelem

hlasů
38

To je jeden z „těžkých problémů“ okolní zástavby. Pokud je mi známo, nejsou tam žádné dokonalé řešení.

Pokud si jen potřebujete uložit strukturu databáze a nikoli dat můžete exportovat do databáze jako SQL dotazů. (V Enterprise Manager: Klikněte pravým tlačítkem myši na databázi -> Generování skriptu SQL I vám nastavit „vytvořit jeden soubor na objekt“ na kartě Možnosti.) Potom můžete dopustit tyto textové soubory svn a využívat diff a protokolování funkce SVN je.

Jsem to svázané s dávkový skript, který trvá několik parametrů a zřizuje databázi. Také jsem přidal nějaké další dotazy, které vstupují výchozí data jako typy uživatelů a uživatel admin. (Chcete-li více informací na toto téma, po něčem a můžu dát skript někde přístupný)

Pokud potřebujete, aby se všechna data stejně, doporučuji držet se zálohování databáze a pomocí Redgate ( http://www.red-gate.com/ ) produktů dělat srovnání. Oni nejsou levné, ale stojí za každý cent.

Odpovězeno 01/08/2008 v 20:28
zdroj uživatelem

hlasů
37

Za prvé, musíte zvolit systém řízení verzí, který je pro vás to pravé:

  • Centralizovaný Version Control Systém - standardní systém, kde uživatelé check out / check in před / po práci se soubory a soubory jsou uloženy v jediném centrálním serveru

  • Distribuovaný systém Version Control - systém, v němž je úložiště byl klonovaný a každý klon je vlastně kompletní záloha úložiště, takže když pak mohou být použity jakékoliv server havaruje, jakýkoli klonovaný úložiště obnovit Po výběru správného systému pro vaše potřeby budete muset nastavit úložiště, která je jádrem každého systému pro správu verzí vše je to vysvětleno v následujícím článku: http://solutioncenter.apexsql.com/sql-server-source-control-part-i-understanding source-control-základy /

Po nastavení úložiště, a v případě centrálního systému pro správu verzí pracovní složky, můžete si přečíst tento článek . To ukazuje, jak nastavit zdroj ovládacího prvku ve vývojovém prostředí pomocí:

  • SQL Server Management Studio prostřednictvím poskytovatele MSSCCI,

  • Visual Studio a SQL Server datové Tools

  • Nástroj třetí stranou Control ApexSQL Source
Odpovězeno 24/06/2015 v 10:36
zdroj uživatelem

hlasů
22

Tady u Červené brány nabízíme nástroj, SQL zdroj ovládacího prvku , který používá SQL Porovnat technologie k propojení databáze s TFS nebo SVN. Tento nástroj integruje do SSMS a umožňuje pracovat jako byste normálně, kromě toho, že nyní umožňuje zavázat objekty.

Pro přiblížení migrace na bázi (vhodnější pro automatizované nasazení), nabízíme ReadyRoll , který vytváří a spravuje řadu dílčích skriptů jako Visual Studio projektu.

V SQL Zdroj řízení je možné určit statické datové tabulky. Ty jsou uloženy v řízení zdrojů, jako INSERT ignorovat prohlášení.

Pokud mluvíte o testovacích dat, kterou doporučujeme buď generování testovacích dat s nástrojem, nebo pomocí skriptu post-nasazení určíte, nebo si jednoduše obnovit zálohu produkce do vývojářského prostředí.

Odpovězeno 01/07/2010 v 10:10
zdroj uživatelem

hlasů
20

Možná budete chtít podívat na Liquibase ( http://www.liquibase.org/ ). Dokonce i když nechcete použít nástroj sám zpracovává koncepce řízení změn databáze nebo refaktorování docela dobře.

Odpovězeno 16/09/2008 v 19:16
zdroj uživatelem

hlasů
17

1 pro každého, kdo doporučil Redgate nástroje, s další doporučení a upozorněním.

SqlCompare má také slušně zdokumentované API: takže si můžete například napsat aplikaci konzoly, který synchronizuje složku zdrojové řízený skripty s integrace CI testovací databáze na checkin, takže když někdo kontroluje byla změna schématu z jejich složky scripts to automaticky nasazeny spolu se změnou kódu aplikace vyhovující. To pomáhá zacelit mezeru s vývojáři, kteří zapomínají o šíření změn v jejich místní db až společném vývoji DB (asi polovina z nás, myslím :)).

Námitka je, že s skriptované roztokem nebo jiným způsobem Redgate nástroje jsou dostatečně hladké, že je snadné zapomenout na SQL skutečností, které jsou základem abstrakci. Pokud přejmenujete všechny sloupce v tabulce, SqlCompare nemá žádný způsob, jak mapovat staré sloupy s novými sloupy a klesnou všechna data v tabulce. To bude generovat varování, ale já jsem viděl lidé kliknou minulost. Tam je obecný bod zde stojí za to dělat, myslím, že můžete automatizovat jen DB verzí a modernizaci doposud - abstrakce jsou velmi děravé.

Odpovězeno 15/10/2008 v 10:44
zdroj uživatelem

hlasů
14

S VS 2010 pomocí databáze projektu.

  1. Script z databáze
  2. Provádět změny skriptů, nebo přímo na vašem serveru DB
  3. Synchronizovat s použitím dat> Schema Porovnejte

Dělá perfektní řešení DB verzí a umožňuje synchronizaci DB je to hračka.

Odpovězeno 25/02/2011 v 21:18
zdroj uživatelem

hlasů
14

Používáme DBGhost řídit naše databáze SQL. Pak si dejte skripty vytvořit novou databázi na kontrolu verzí, a to bude buď vytvořit novou databázi, nebo aktualizovat všechny existující databázi schématu při kontrole verze. Tímto způsobem nebudete muset starat o vytváření změny skriptů (i když stále můžete udělat, pokud například chcete změnit typ dat sloupce a je třeba převést data).

Odpovězeno 07/08/2008 v 22:12
zdroj uživatelem

hlasů
12

Je to dobrý přístup k uložení skripty databáze do správy verzí s skripty změny, takže si můžete upgradovat jakoukoliv jednu databázi máte. Také možná budete chtít ušetřit schémat pro různé verze, takže si můžete vytvořit úplnou databázi, aniž by bylo nutné použít všechny skripty na změnu. Manipulaci skripty by měly být automatizován, takže nemusíte dělat manuální práci.

Myslím, že je důležité mít k dispozici samostatnou databázi pro každého vývojáře a nepoužívat sdílené databáze. Že způsob, jakým mohou vývojáři vytvářet testovací případy a vývojové fáze nezávisle na ostatních vývojářů.

Nástroj automatizaci by měl mít prostředky pro manipulaci s databází metadat, která říká, jaké jsou databáze, v jakém stádiu vývoje a které tabulky obsahují verze kontrolovatelná data a tak dále.

Odpovězeno 24/09/2008 v 07:11
zdroj uživatelem

hlasů
11

Dalo by se také podívat na řešení migrace. Ty umožňují zadat svoji schéma databáze v kódu C # a vrátit verzi databáze nahoru a dolů pomocí MSBuild.

Já jsem v současné době pomocí DbUp , a to funguje dobře.

Odpovězeno 06/08/2008 v 23:51
zdroj uživatelem

hlasů
10

Jste nezmiňuje žádné konkrétní informace o vaší cílové prostředí či omezení, takže to nemusí být zcela použitelné ... ale pokud hledáte způsob, jak efektivně sledovat vyvíjející DB schématu a nejsou nepříznivé pro myšlenku využití Ruby, ActiveRecord je migrace jsou až vaše uličky.

Migrace programatically definovat databáze transformací pomocí Ruby DSL; každá změna může být aplikován nebo (obvykle) vrácena zpět, což vám umožní přejít na jinou verzi vašeho DB schématu v daném okamžiku. Soubor definování těchto transformací mohou být kontrolovány na správu verzí, jako jakýkoli jiný kus zdrojového kódu.

Vzhledem k tomu, migrace jsou součástí ActiveRecord , obvykle nacházejí uplatnění v full-stack Rails aplikací; Nicméně, můžete použít ActiveRecord nezávisle na příčkách s minimálním úsilím. Viz zde pro detailnější léčbu pomocí Ar je migrace mimo Rails.

Odpovězeno 02/08/2008 v 18:54
zdroj uživatelem

hlasů
9

Každý Databáze by měla být pod kontrolou zdrojového kódu. Co je chybí je nástroj pro automatické skriptu všechny objekty databáze - a „konfigurační data“ - do souboru, který pak lze přidat do jakéhokoli zdroj ovládacího prvku systému. Pokud používáte SQL Server, pak moje řešení je zde: http://dbsourcetools.codeplex.com/ . Bavit. - Nathan.

Odpovězeno 07/07/2009 v 13:58
zdroj uživatelem

hlasů
8

Je to jednoduché.

  1. Když je základní projekt je připraven, pak musíte vytvořit úplnou skript databáze. Tento skript se zavazuje k SVN. Je to první verze.

  2. Poté se všichni vývojáři vytváří změny skriptů (ALTER ..., nové stoly, sprocs a podobně).

  3. Když budete potřebovat aktuální verzi, pak byste měli provádět všechny nové změny skripty.

  4. Je-li aplikace uvolněna do výroby a pak se vrátit zpět na hodnotu 1 (ale pak to bude postupná verzi samozřejmě).

Nant vám pomůže provést tyto změny skripty. :)

A pamatuj. Všechno funguje, když je disciplína. Pokaždé, když je změna databáze spáchal poté odpovídající funkce v kódu jsou zavázáni taky.

Odpovězeno 16/05/2009 v 12:31
zdroj uživatelem

hlasů
7

Chcete-li výpis do řídícího systému zdrojového kódu, který trochu rychleji, můžete vidět které objekty se změnily od poslední návštěvy na základě informací o verzi v sysobjects.

Setup: Vytvoření tabulky v každé databázi, kterou chcete zkontrolovat postupně k uchování informací o verzi z posledního jej zkontrolovat (prázdné při prvním spuštění). Zrušte tuto tabulku, pokud chcete znovu projít celou svou datovou strukturu.

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)
)

Normální provozní režim: Můžete si vzít výsledky z tohoto SQL a generovat SQL skripty pro jen ty, které vás zajímají, a dát je do ovládacího prvku zdroje podle svého výběru.

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

Poznámka: Pokud používáte nestandardní řazení v některé ze svých databází, budete muset vyměnit /* COLLATE */s vaší databáze kolace. tjCOLLATE Latin1_General_CI_AI

Odpovězeno 24/09/2008 v 13:53
zdroj uživatelem

hlasů
7

Vzhledem k tomu, naše aplikace musí fungovat napříč různými RDBMSs, uložíme naši definici schématu v řízení verzí pomocí databázového neutrální Torque formát (XML). Také jsme pro verzi řízení referenčních dat pro databázi ve formátu XML se takto (kde „vztah“ je jedním z referenčních tabulek):

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

Potom použijeme domácích nástroje pro generování upgrade schématu a referenční údaje aktualizovat skripty, které jsou potřebné k přejít od verze X databáze na verzi X + 1.

Odpovězeno 24/09/2008 v 06:49
zdroj uživatelem

hlasů
7

Máte-li malou databázi a chcete verzi celou věc, tato šarže scénář by mohl pomoci. To odpojí, komprimuje a kontroluje MDF souboru MSSQL databáze do Subversion.

Pokud jste si většinou chtějí verzi vašeho schéma a mají jen malé množství referenčních údajů, můžete případně použít podzvukový migrace zvládnout to. Výhodou je, že můžete snadno migrovat směrem nahoru nebo dolů na žádnou konkrétní verzi.

Odpovězeno 07/08/2008 v 22:21
zdroj uživatelem

hlasů
6

Napsal jsem tuto aplikaci před chvílí, http://sqlschemasourcectrl.codeplex.com/ který prohledá váš MSFT SQL db je tak často, jak chcete, a automaticky vypsat své objekty (tabulky, pohledy, PROC, funkce, nastavení SQL) do SVN. Funguje jako kouzlo. Používám ho s Unfuddle (což mi umožňuje dostat se k záznamům o checkins)

Odpovězeno 23/09/2010 v 03:35
zdroj uživatelem

hlasů
6

Měli jsme potřebu verze databázi SQL poté, co jsme se stěhovali na platformě x64 a naše stará verze se rozešel s migrací. Napsali jsme C # aplikace, který používal SQLDMO zmapovat všechny objekty SQL do složky:

                Vykořenit
                    ServerName
                       Jméno databáze
                          Schema Objects
                             Databáze Triggers *
                                .ddltrigger.sql
                             funkce
                                ..function.sql
                             Bezpečnostní
                                role
                                   aplikační role
                                      .approle.sql
                                   databázové role
                                      .role.sql
                                schémata *
                                   .schema.sql
                                uživatelé
                                   .user.sql
                             Úložný prostor
                                Plný text katalogy *
                                   .fulltext.sql
                             uložené procedury
                                ..proc.sql
                             synonyma *
                                .synonym.sql
                             stoly
                                ..table.sql
                                omezení
                                   ... chkconst.sql
                                   ... defconst.sql
                                indexy
                                   ... index.sql
                                klávesy
                                   ... fkey.sql
                                   ... pkey.sql
                                   ... ukey.sql
                                Triggers
                                   ... trigger.sql
                             druhy
                                Uživatelem definované datové typy
                                   ..uddt.sql
                                XML Schema sbírky *
                                   ..xmlschema.sql
                             pohledy
                                ..view.sql
                                indexy
                                   ... index.sql
                                Triggers
                                   ... trigger.sql

Aplikace by pak porovnat nově písemné verzi na verzi uložené v SVN, a pokud tam byly rozdíly by aktualizovat SVN. Zjistili jsme, že běží proces jednou večer stačilo, protože neděláme, že mnoho změn SQL. To nám umožní sledovat změny u všech objektů se staráme o navíc to nám umožňuje obnovit naši plnou schéma v případě vážného problému.

Odpovězeno 09/10/2008 v 15:54
zdroj uživatelem

hlasů
6

Nechceme ukládat schéma databáze, uložíme změny do databáze. To, co děláme, je uložit změny schématu, takže budujeme změnit skript pro všechny verze databáze a použít jej k databázím našich zákazníků. Napsal jsem databáze užitnou aplikaci, která dostane distribuován s naší hlavní aplikace, která umí číst, že scénář a vědět, které aktualizace je třeba použít. Má také dost chytrosti k osvěžení pohledy a uložené procedury podle potřeby.

Odpovězeno 07/08/2008 v 00:00
zdroj uživatelem

hlasů
5

Souhlasím s ESV odpovědi az tohoto přesného důvodu jsem začal trochu projektu, zatímco zpět, aby pomohl udržet aktualizace databáze ve velmi jednoduchém souboru, který by pak mohly být udržovány dlouhou stranu se zdrojový kód. To umožňuje snadné aktualizace pro vývojáře, stejně jako UAT a výroby. Tento nástroj pracuje na, ale SQL Server a MySQL.

Některé funkce projektu:

  • Umožňuje změny schématu
  • Umožňuje hodnota strom populace
  • Umožňuje samostatné testovací datové vložky pro např. UAT
  • Umožňuje volbu pro vrácení zpět (není automatická)
  • Udržuje podporu pro SQL Server a MySQL
  • Má možnost importovat existující databázi do správy verzí s jedním jednoduchým příkazem (SQL Server pouze ... stále pracuje na mysql)

Kód je umístěn na webu Google Code. Prosím, podívejte se kód Google pro některé další informace

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

Odpovězeno 24/02/2011 v 19:28
zdroj uživatelem

hlasů
5

Právě jsme začali používat Team Foundation Server. Pokud databáze je střední velikosti, pak Visual Studio má některé příjemné projektu integrace s vestavěným srovnat, porovnat údaje, databáze refactoring nástroje, databáze testování rámec, a dokonce i nástroje pro generování dat.

Ale tento model se nehodí velmi velké nebo třetích stran databází (tj šifrování objekty) velmi dobře. Takže to, co jsme udělali, je pro uložení pouze naše přizpůsobené objekty. Visual Studio / Team Foundation Server funguje velmi dobře na to.

TFS Database vedoucí arch. blog

MS TFS místo

Odpovězeno 22/08/2008 v 18:13
zdroj uživatelem

hlasů
5

Typickým řešením je export databáze podle potřeby a zálohování tyto soubory.

V závislosti na vaší vývojové platformy, může být opensource plugins k dispozici. Válcování svůj vlastní kód, jak to udělat, je obvykle poměrně triviální.

Poznámka: Možná budete chtít zálohovat výpis databáze namísto odložení do správy verzí. Soubory mohou získat obrovské rychle pod kontrolou verzí, a způsobí, že vaše celé řídicí source systém, aby se stal pomalý (já připomínající CVS hororový příběh v tuto chvíli).

Odpovězeno 03/08/2008 v 02:49
zdroj uživatelem

hlasů
4

Jsem také pomocí verze v databázi uložené prostřednictvím databáze rozšířena reality Rodinný postupů. Moje aplikace má skripty pro každou verzi kroku (tj. Se pohybují od 1,1 do 1,2). Při nasazení, to vypadá na aktuální verzi a potom spustí skripty, jeden po druhém, dokud nedosáhne na poslední verzi aplikace. Neexistuje žádný skript, který má přímý ‚finální‘ verzi, dokonce nasadit na čistý DB dělá nasazení pomocí řady aktualizačních kroků.

A teď, co jsem chtěl dodat, že jsem viděl před dvěma dny prezentace na akademické půdě MS o nové a nadcházející VS DB vydání. Prezentace byla zaměřena speciálně na toto téma a já jsem byl vyhozen z vody. Určitě byste měli podívat se na to, že nová zařízení jsou zaměřeny na udržování definici schématu v T-SQL skriptů (vytváří), runtime delta motoru porovnat nasazení schéma s definovaným schématem a dělá delta mění a integrace s integrací zdrojového kódu, a to až do včetně MSBuild kontinuální integrace automatizovaných sestavení kapky. Pokles bude obsahovat nový typ souboru, .dbschema soubory, které mohou být přijata na místě nasazení a nástroj příkazového řádku lze provést skutečnou ‚delty‘ a spustit nasazení. Mám položku blogu na toto téma s odkazy na stažení VSDE, měli byste check out: http://rusanu.com/2009/05/15/version-control-and-your-database/

Odpovězeno 15/05/2009 v 20:26
zdroj uživatelem

hlasů
4

Před chvílí jsem našel bas modul VB, který používal DMO a VSS objekty se dostat celý db scénář off a do VSS. Obrátil jsem ji do VB Script a zaslali jej sem . Dalo by se snadno vyjmout volání VSS a používat věci DMO generovat všechny skripty, a pak volat SVN ze stejného dávkového souboru, který volá VBScript je zkontrolovat?

Dave J

Odpovězeno 16/09/2008 v 18:55
zdroj uživatelem

hlasů
3

Jeho velmi stará otázka, ale mnoho z nich se snaží vyřešit to i teď. Jediné, co musíte udělat, je výzkum o Visual databáze projektů Studio. Bez toho, jakýkoliv vývoj databáze vypadá velmi chabá. Od organizace kód pro nasazení na správu verzí, že zjednodušuje všechno.

Odpovězeno 23/06/2015 v 11:26
zdroj uživatelem

hlasů
2

Podívejte se na DBGhost http://www.innovartis.co.uk/ . Použil jsem v automatizovaným způsobem po dobu 2 let a funguje to skvěle. To umožňuje náš DB staví stát podobně jako Javu nebo C build stane, kromě databázi. Víš co myslím.

Odpovězeno 02/11/2009 v 23:17
zdroj uživatelem

hlasů
2

Podle mých zkušeností řešením je dvojí:

  1. Musíte zvládnout změny do databáze vývoje, které provádí více vývojáři v průběhu vývoje.

  2. Musíte zvládnout aktualizace databáze v zákazníků stránek.

Aby bylo možné zvládnout # 1 budete potřebovat silnou databáze diff / nástroj pro slučování. Nejlepší nástroj by měl být schopen provádět automatickou korespondence, stejně jako je to možné a zároveň umožňuje řešit konflikty neošetřené ručně.

Dokonalý nástroj, by měli zacházet sloučit operace pomocí algoritmu slučovací 3-way, který přináší v úvahu změny, které byly provedeny v jejich databázi a databáze moje, vzhledem k databázi BASE.

Napsal jsem komerční nástroj, který poskytuje podporu ruční sloučení pro SQLite databáze, a já jsem v současné době přidává podporu pro 3-way sloučení algoritmu pro SQLite. Vyzkoušejte to na http://www.sqlitecompare.com

Aby bylo možné zvládnout # 2 budete potřebovat upgrade rámec na místě.

Základní myšlenkou je vytvořit automatickou aktualizační rámec, který ví, jak přejít z existujícího SQL schématu na novější SQL schématu a může stavět upgrade pro každou existující instalace DB.

Podívejte se na můj článek na toto téma v http://www.codeproject.com/KB/database/sqlite_upgrade.aspx získat obecnou představu o tom, co mluvím.

Hodně štěstí

Liron Levi

Odpovězeno 06/08/2009 v 11:28
zdroj uživatelem

hlasů
1

Navrhoval bych pomocí srovnávacích nástrojů improvizovat systém pro správu verzí pro databázi. Dobrou alternativou jsou xSQL Schema Porovnejte a xSQL porovnání dat .

Nyní, pokud je vaším cílem je mít pouze schéma této databáze pod kontrolou verzí můžete jednoduše použít xSQL Schema Porovnejte generovat xSQL snímků schématu a přidat tyto soubory ve vaší kontrolou verzí. Než se vrátit nebo aktualizace konkrétní verzi stačí porovnat aktuální verzi databáze se snímkem pro cílovou verzi.

Bohužel, pokud chcete mít data pod kontrolou verze stejně, můžete použít xSQL porovnání dat ke generování změn skripty pro vás databázi a přidat .sql soubory v řízení verzí. Dalo by se pak spustit tyto skripty vrátit / update na libovolnou verzi, kterou chcete. Mějte na paměti, že pro ‚Vrátit se‘ funkčnost je třeba vytvářet změny skriptů, které při provádění bude verze 3 stejné jako verze 2 a pro ‚update‘ funkcionality, je nutné vytvářet změny skriptů, které dělají pravý opak.

A konečně, s některými základními šarže znalosti programování můžete automatizovat celý proces pomocí verze příkazového řádku xSQL Schema Porovnejte a xSQL dat Porovnat

Disclaimer: Já přidružený k xSQL.

Odpovězeno 10/01/2017 v 16:16
zdroj uživatelem

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