Aktualizoval jsem svůj původní příspěvek níže, aby odrážel změny v nejnovějších verzích SQL Source Control (3.0) a SQL Compare (10.1).
Vzhledem k tomu, že tato otázka byla položena před více než rokem, moje odpověď pro vás nemusí být tak užitečná, ale pro ostatní, kteří mohou v současné době hodnotit SSC, jsem si řekl, že vhodím své dva centy. Právě jsme začali používat SQL Source Control (SSC) a celkově jsem s ním zatím docela spokojen. Má to však určité zvláštnosti, zvláště pokud pracujete v prostředí sdílené databáze (na rozdíl od každého vývojáře pracujícího lokálně) a zejména pracujete ve starším prostředí, kde jsou objekty ve stejné databázi rozděleny mezi vývojové týmy nahodile.
Abychom poskytli stručný přehled o tom, jak produkt používáme v naší organizaci, pracujeme ve sdíleném prostředí, kde všichni provádíme změny ve stejné vývojové databázi, takže jsme sdílenou databázi připojili k úložišti ovládacích prvků zdroje. Každý vývojář je zodpovědný za provádění změn v objektech v databázi prostřednictvím SQL Server Management Studio (SSMS) a po jejich dokončení může své změny odevzdat do řízení zdroje. Když jsme připraveni na nasazení do fáze, hlavní sestavení (já) sloučí vývojovou větev kódu databáze s hlavní (předběžnou) větví a poté spustí SQL Compare s použitím verze úložiště hlavní větve databáze jako zdroje a živé přípravnou databázi jako cíl a SQL Compare vygeneruje potřebné skripty pro nasazení změn provedených v pracovním prostředí. Nasazení do produkčního prostředí funguje podobným způsobem. Dalším důležitým bodem je, že vzhledem ke skutečnosti, že sdílíme stejnou databázi s jinými vývojovými týmy, používáme vestavěnou funkci SSC, která vám umožňuje vytvářet filtry na databázových objektech podle názvu, typu atd. Ručně nastavit filtry na objektech našeho konkrétního týmu s vyloučením všech ostatních objektů, abychom omylem neprovedli změny jiného vývojového týmu, když provádíme naše nasazení.
Obecně se tedy jedná o poměrně jednoduchý produkt na nastavení a použití a je opravdu pěkný, protože vždy pracujete s živými objekty v SSMS, na rozdíl od odpojených souborů skriptů uložených v samostatném zdrojovém úložišti, u kterých existuje riziko, že se nebudou synchronizovat. . Je to také příjemné, protože SQL Compare generuje skripty nasazení za vás, takže se nemusíte starat o zavádění chyb, jako kdybyste skripty vytvářeli sami. A protože SQL Compare je velmi vyspělý a stabilní produkt, můžete si být jisti, že pro vás vytvoří správné skripty.
Nicméně s tím, co bylo řečeno, zde jsou některé vtípky, na které jsem zatím narazil:
- SSC je hned po vybalení docela upovídaný, pokud jde o komunikaci s db serverem, aby bylo možné sledovat položky databáze, které nejsou synchronizovány s repozitářem ovládacích prvků zdroje. Dotazuje se každých několik milisekund, a pokud přidáte více vývojářů, kteří všichni pracují se stejnou databází pomocí SSC, můžete si představit, že naši dba nebyli příliš spokojeni. Naštěstí můžete snadno snížit frekvenci dotazování na něco přijatelnějšího, i když za cenu obětování citlivých vizuálních upozornění na změny objektů.
- Pomocí funkce filtrování objektů nemůžete z pohledu na objekty v SSMS snadno zjistit, které objekty jsou zahrnuty ve vašem filtru. Nevíte tedy jistě, zda je objekt pod kontrolou zdroje, na rozdíl od sady Visual Studio, kde se k označení objektů ovládaných zdrojem používají ikony.
- GUI pro filtrování objektů je velmi neohrabané. Vzhledem k tomu, že pracujeme ve starším databázovém prostředí, v současné době neexistuje jasné oddělení mezi objekty, které náš tým vlastní, a objekty vlastněnými jinými týmy, abychom zabránili náhodnému provedení/nasazení změn jiných týmů , nastavili jsme schéma filtrování, abychom explicitně zahrnuli každý konkrétní objekt, který vlastníme. Jak si dokážete představit, stává se to poměrně těžkopádným, a protože GUI pro úpravu filtrů je nastaveno tak, aby vstupovalo po jednom objektu, mohlo by to být docela bolestivé, zvláště když se pokoušíte nastavit své prostředí poprvé (skončil jsem napsání aplikace k tomu). V budoucnu pro naši aplikaci vytváříme nové schéma, které lépe usnadní filtrování objektů (kromě toho, že je to každopádně lepší postup).
- Pomocí sdíleného databázového modelu mohou vývojáři zadávat jakékoli nevyřízené změny do zdrojové řízené databáze, i když změny nejsou jejich. SSC vás upozorní, pokud se pokusíte zkontrolovat spoustu změn, že tyto změny nemusí být vaše, ale kromě toho, že jste na to sami. Ve skutečnosti to považuji za jeden z nejnebezpečnějších „vtipů“ SSC.
- SQL Compare nemůže aktuálně sdílet filtry objektů vytvořené SSC, takže byste museli ručně vytvořit odpovídající filtr v SQL Compare, takže existuje nebezpečí, že by se mohly nesynchronizovat. Právě jsem skončil vyjmutím a vložením filtrů ze základního souboru filtru SSC do filtru projektu SQL Compare, abych se vyhnul neohrabanému GUI filtrování objektů. Věřím, že příští verze SQL Compare mu umožní sdílet filtry s SSC, takže alespoň tento problém je pouze krátkodobý. (POZNÁMKA:Tento problém byl vyřešen v nejnovější verzi SQL Compare. SQL Compare nyní může používat objektové filtry vytvořené SSC.)
- Porovnání SQL také nelze porovnávat s databázovým úložištěm SSC, když je spuštěno přímo. Musí být spuštěn z SSMS. Věřím, že příští verze SQL Compare tuto funkcionalitu poskytne, takže je to opět další krátkodobý problém. (POZNÁMKA:Tento problém byl vyřešen v nejnovější verzi SQL Compare.)
- Někdy není SQL Compare schopen vytvořit správné skripty pro přesun cílové databáze z jednoho stavu do druhého, obvykle v případě, kdy aktualizujete schéma existujících tabulek, které nejsou prázdné, takže musíte psát ruční skripty a řídit proces sami. Naštěstí se to vyřeší pomocí „migračních skriptů“ v příštím vydání SSC a z pohledu na verzi produktu z raného vydání se zdá, že implementace této nové funkce byla dobře promyšlená a navržená. (POZNÁMKA:Funkce migračních skriptů byla oficiálně vydána. V současné době však nepodporuje větvení. Pokud chcete používat migrační skripty, budete muset spustit sql porovnání s vaší původní větví vývojového kódu... tím, kde zkontrolovali jste své změny... což je dost neohrabané a donutilo mě to upravit proces sestavování méně než ideálním způsobem, abych toto omezení obešel. Doufejme, že to bude vyřešeno v budoucí verzi.)
Celkově jsem s produktem docela spokojený a s tím, jak Redgate reaguje na zpětnou vazbu od uživatelů a směr, kterým se produkt ubírá. Produkt se velmi snadno používá a je dobře navržen a mám pocit, že v příští nebo dvou verzích nám produkt pravděpodobně poskytne většinu, ne-li všechno, z toho, co potřebujeme.