Nasazení databáze SQL Server z testu žít

hlasů
24

Zajímalo by mě, jak vy spravovat nasazení databáze mezi 2 servery SQL, konkrétně SQL Server 2005. Nyní je zde vývoj a živé jeden. Vzhledem k tomu by mělo být součástí buildscript (standardní Windows šarže, a to i co dělat s aktuální složitosti těchto scénářů, možná i přepnout do PowerShell nebo tak později), Enterprise Manager / Management Studio Express nepočítají.

Chtěli byste stačí zkopírovat soubor MDF a uvádějte jej vždy společně? Já jsem vždycky trochu opatrný při práci s binárními daty, protože to vypadá, že je otázka Kompatibilita (i když vývoj a žít měli spustit stejnou verzi serveru po celou dobu).

Nebo - vzhledem k nedostatku „Vysvětli CREATE TABLE“ v T-SQL - děláte něco, co vyváží existující databázi do SQL skriptů, které lze spustit na cílovém serveru? Pokud ano, existuje nástroj, který dokáže automaticky vypsat danou databázi do SQL dotazů a že uteče příkazového řádku? (Opět platí, Enterprise Manager / Management Studio Express se nepočítají).

A konečně - vzhledem k tomu, že živá databáze již obsahuje data, nasazení nemusí zahrnovat vytvoření všech tabulek, nýbrž kontrolu rozdílu v konstrukci a ALTER TABLE ty živé místo, které mohou také potřebovat údaje pro ověření / konverze při změně stávající pole.

Teď jsem slyšel spoustu skvělých věcí o Red Gate produktů, ale pro hobby projekty, cena je trochu strmá.

Takže, co používáte pro automatické nasazení databáze SQL Server z testu žít?

Položena 03/08/2008 v 00:30
zdroj uživatelem
V jiných jazycích...                            


14 odpovědí

hlasů
19

Vzal jsem do ruky kódování celý svůj DDL (vytvoří / změnit / smazat) příkazy, jejich přidání do mého .sln jako textové soubory a používat normální verzí (pomocí podvracení, ale každý řídící revize by měla fungovat). Tímto způsobem jsem nejen získat výhodu verzí, ale AKTUALIZUJETE živě z dev / stage je stejný proces kódu a databáze - značky, větve a podobně práci všechny stejné.

Jinak souhlasím Redgate je drahé, pokud nemáte společnost nákup za vás. Pokud můžete získat společnost koupit to pro vás i když, je to opravdu stojí za to!

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

hlasů
14

U mých projektů I střídavě Porovnání SQL z Red Gate a Publishing Wizard od společnosti Microsoft databáze, které si můžete stáhnout zdarma zde .

Průvodce není tak hladká, jak si porovnejte SQL nebo SQL data Porovnej ale to trik. Jednou z otázek je, že skripty to generuje může potřebovat nějaké přeskupit a / nebo editaci proudit v jednom záběru.

Na up straně, může přesunout své schéma a data, která není špatné pro bezplatný nástroj.

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

hlasů
7

Nezapomeňte řešení Microsoft problému: Visual Studio 2008 databáze Edition . Obsahuje nástroje pro zavádění změn v databázích, vytváření diference mezi databázemi pro schéma a / nebo změny dat, jednotkové testy, generování testovací data.

Je to docela drahé, ale jsem použil zkušební verzi na chvíli a myslel, že to byl skvělý. To je v databázi jako snadné s ním pracovat jako každý jiný kus kódu.

Odpovězeno 18/08/2008 v 11:47
zdroj uživatelem

hlasů
6

Stejně jako Rob Allen, já používám Porovnání SQL / Data Porovnat by Redgate. Já také použít Průvodce publikováním databáze Microsoftu. Mám také konzolovou aplikaci jsem napsal v jazyce C #, který bere skript SQL a spustí jej na serveru. Tímto způsobem můžete spustit velké skripty s ‚GO‘ příkazy v něm z příkazového řádku nebo v dávkovém skriptu.

Používám Microsoft.SqlServer.BatchParser.dll a Microsoft.SqlServer.ConnectionInfo.dll knihovny v aplikaci konzoly.

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

hlasů
4

I pracovat stejným způsobem Karl dělá, tím, že drží všechny mé SQL skriptů pro vytváření a změnu tabulek v textovém souboru, který jsem udržet zdroj. Ve skutečnosti, aby se zabránilo problému, že bude muset mít skript prozkoumat živé databáze určit, co se změní pro spuštění, obvykle pracuji jako toto:

  • Na první verzi, kladu vše při testování do jednoho SQL skriptu, a léčit všechny tabulky jsou CREATE. To znamená, že jsem nakonec upustil a readding tabulek hodně během testování, ale to není velký problém, brzy do projektu (protože jsem obvykle hacking data Já používám v tomto bodě tak jako tak).
  • U všech dalších verzích, jsem udělat dvě věci: I vytvořit nový textový soubor držet upgrade SQL skripty, které obsahují jen ty změní pro tuto verzi. A já provést změny k původnímu, vytvořte novou databázi skript stejně. Tímto způsobem upgrade prostě spustí aktualizační skript, ale máme-li obnovit DB nepotřebujeme spouštět skripty 100 se tam dostat.
  • V závislosti na tom, jak jsem nasazení změny DB, budu také obvykle dát verze tabulky v DB, který zastává verze DB. Potom, spíše než dělat žádné lidské rozhodování o tom, které spouštění skriptů, bez ohledu na kód, který jsem již běží na vytvoření / upgrade skripty používá verzi zjistit, co ke spuštění.

Jedna věc, že ​​to nebude dělat, je užitečné, pokud část z toho, co jste v pohybu od testu k výrobě jsou data, ale pokud chcete spravovat strukturu a ne platit za pěkné, ale drahé balíčku týkajícího se řízení DB, je opravdu není příliš obtížné. Také jsem zjistil, že je to docela dobrý způsob, jak udržet duševní sledovat své DB.

Odpovězeno 03/08/2008 v 01:37
zdroj uživatelem

hlasů
3

Používání SMO / DMO, není příliš obtížné generování skriptu svého schématu. Data je trochu více zábavy, ale přesto proveditelné.

Obecně platí, že beru přístup „Script It“, ale možná budete chtít, aby zvážila něco v tomto smyslu:

  • Rozlišovat mezi rozvoj a představení, takže si můžete vytvořit s podmnožinou dat ... to bych vytvořit nástroj jednoduše strhnout některé výrobní data nebo vytvářet falešné údaje, pokud jde o bezpečnost.
  • Pro rozvoj týmu, musí být každá změna databáze bude muset být koordinována mezi členy týmu. Schéma a data změny mohou být prolínaly, ale jediný scénář by měl umožnit určitou funkci. Poté, co všechny vaše vlastnosti jsou připraveni, můžete svazek nich v jediném souboru SQL a spustit, že proti obnovení výroby.
  • Jakmile bude vaše inscenace dala souhlas, spuštění jediné SQL soubor znovu na výrobním stroji.

Použil jsem nástroje Red Gate a jsou skvělé nástroje, ale pokud si to nemůže dovolit, stavební nářadí a pracovní tento způsob není příliš daleko od ideálu.

Odpovězeno 04/08/2008 v 18:38
zdroj uživatelem

hlasů
3

Máte-li společnost si ho koupím, Toad z Quest Software má tento druh funkcí správy postavena v roce. Je to v podstatě provoz dvou kliknutí porovnat dvě schémata a generovat synchronizační skript z jednoho na druhého.

Mají vydání pro většinu populárních databází, samozřejmě včetně SQL Server.

Odpovězeno 03/08/2008 v 01:22
zdroj uživatelem

hlasů
2

Také trvám na skripty pro všechny mé objekty a data. Pro nasazení jsem napsal tuto utilitu - http://www.sqldart.com . Bude vám umožní změnit uspořádání souborů skriptu a potrvá celý pozemek v rámci transakce.

Odpovězeno 08/06/2010 v 22:33
zdroj uživatelem

hlasů
2

Redgate SqlCompare je způsob, jak jít podle mého názoru. Děláme nasazení DB v pravidelných intervalech, a od té doby jsem začal používat tento nástroj, nikdy jsem se ohlédl. Velmi intuitivní rozhraní a ušetří spoustu času do konce.

Pro verze se postará o skriptování pro integraci řídicího zdroje stejně.

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

hlasů
2

Já používám podzvukových je migrace mechanismus tak jsem mít dll s třídami v squential pořadí, které mají 2 způsoby, nahoru a dolů. K dispozici je kontinuální integrace / build script háček do Nant, takže mohu zautomatizovat modernizaci mé databáze.

Není to nejlepší thign na světě, ale je to lepší psaní DDL.

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

hlasů
2

Souhlasím s udržet vše v řízení zdrojů a ručně skriptování všechny změny. Změny schématu pro vydání singlu jít do souboru skriptu vytvořené speciálně pro tuto verzi. Všechny uložené procs, pohledy, atd by měl jít do jednotlivých souborů a zpracuje stejně jako .cs nebo ASPX, pokud jde o ovládání zdroje pokračuje. Používám PowerShell skript pro generování jeden velký soubor .sql k aktualizaci programovatelnost věci.

Nelíbí se mi automatizací uplatňování změn schématu, stejně jako nových tabulek, nové sloupy apod Při uvolnění po výrobě, chci projít příkazu změna skriptu příkazem, aby se ujistil, každý z nich pracuje podle očekávání. Není nic horšího, než běží velká změna skript na výrobu a získávání chyby, protože jste zapomněli nějaký malý detail, který neměl prezentovat se ve vývoji.

Také jsem se dozvěděl, že indexy je třeba zacházet stejně jako soubory a kód do ovládacího prvku zdroje.

A vy byste měli rozhodně mít více než 2 databází - dev a žít. Měli byste mít databázi dev že každý používá pro každodenní dev úkoly. Pak databáze inscenace, která napodobuje produkci a používá se dělat svou testování integrace. Pak možná úplná kopie poslední výroby (obnovena z úplné zálohy), je-li to možné, takže vaše poslední kolo testování instalace je v rozporu s něčím, co je tak blízko ke skutečné věci, jak je to možné.

Odpovězeno 13/08/2008 v 16:41
zdroj uživatelem

hlasů
2

Souhlasím s tím, že skriptovací vše je nejlepší způsob, jak jít, a je to, co jsem zastáncem při práci. Měli byste skript vše od DB a vytvoření objektu pro vyplnění své vyhledávací tabulky.

Vše, co dělat v UI pouze nebudou překládat (zejména změny ... ne tolik pro první nasazení) a skončí vyžadující nástroje, jako je to, co Redgate nabízí.

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

hlasů
1

Jsem v současné době pracuje na samé na vás. Nejen nasazení databází SQL Server od testu k životu, ale také zahrnuje celý proces od Local -> Integrace -> Test -> Production. Takže to, co může udělat mi snadno každý den, je mi dělat NANT úkol s Red-Gate SQL Porovnat . Nebudu pracovat pro Redgate, ale musím říct, že je to dobrá volba.

Odpovězeno 27/11/2008 v 04:15
zdroj uživatelem

hlasů
1

Dělám všechny své vytvoření databáze jako DDL a pak zabalit, že DDL do třídy schématu než dodržení. I mohou dělat různé věci k vytvoření DDL na prvním místě, ale v podstatě dělám všechno maint schématu v kódu. To také znamená, že pokud je potřeba udělat, non DDL věci, které nefungují dobře mapují SQL můžete psát procesní logiku a spusťte jej mezi kusy DDL / DML.

Moje DBS pak mít tabulku, která definuje aktuální verzi, takže se dá kódovat relativně přímočarou sadu testů:

  1. Neexistuje DB? Pokud tomu tak není vytvořte ji.
  2. Je DB aktuální verze? Pokud tomu tak není spusťte metody v uvedeném pořadí, které přinášejí schéma aktuální (možná budete chtít, aby uživatel vyzván k potvrzení a - v ideálním případě - dělat zálohy v tomto bodě).

Pro jednoho uživatele aplikace I stačí spustit to na místě, pro webové aplikace v současné době k zablokování uživatele, zda verze neshodují a mají stand alone schématu maint aplikaci vedeme. Pro multi-uživatele, bude záviset na konkrétním prostředí.

Výhoda? No mám velmi vysokou úroveň důvěry, že schéma pro aplikace, které používají tuto metodu je konzistentní napříč všemi případy těchto aplikací. Její není dokonalá, existují problémy, ale to funguje ...

Existují některé problémy při vývoji v týmovém prostředí, ale to je víceméně daná stejně!

Murphy

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

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