Автоматично генериране на инкрементален SQL скрипт за инкрементални, нощни компилации при използване на Team Build в TFS 2008 и Visual Studio 2008?

надявам се, че всички тук са добре.

Използваме VS 2008 като инструмент за разработка, TFS 2008 като контрол на версиите, както и автоматизация на изграждането. Някои от нашите програмисти използват dbpro за промени в базите данни, а някои използват студио за управление на SQL Server.

Опитвам се да автоматизирам изграждането на уеб приложение, създадено с помощта на C# и VB.Net. Нашият сценарий е такъв, че имаме централна база данни, към която се свързва нашето уеб приложение.

Всеки път, когато предоставяме на нашите клиенти нова функционалност или корекция на грешка, ние им предоставяме постепенни компилации.

SQL скриптът се проверява в контрола на източника за всяка инкрементална компилация, когато са направени и тествани там промени на нашия централен DB сървър.

Искам да генерирам диференциален скрипт, който може да се изпълнява на клиента като скрипт за постепенна актуализация. Сега да го направя е проблем. Понякога нашите разработчици са склонни да забравят наборите за промяна на базата данни и в скрипта в контролата на източника липсва SP или две.

Освен това понякога трябва да вмъкнем данни по подразбиране в някои от таблиците, които имат строги строги стойности, а не тестови стойности. Подобно на таблица, която съдържа услугите, предоставяни от панела, ние добавяме ново име на услугата, подпис, идентификационни данни и адрес на услугата и т.н. и т.н. в ServiceTable. Освен това много други таблици може да имат тестови данни, които може да не са необходими.

Ако използваме DataCompare, той ще генерира набор от промени за изискваните данни (важни за клиента, за да активира определени услуги) и нашите тестови данни, които са добавени към базата данни в резултат на нашето тестване на функционалността или корекция на грешки.

В момента използвам SQLSchemaCompareTask (от Visual Studio 2008 Team Database Professional Power Tools API) във файла TFSBuild.proj на дефиницията на компилация за TFS 2008.

Използвайки SQLSchemaCompareTask, генерираният скрипт съдържа имена на бази данни като [dbo]. и т.н., които не са желани, тъй като скриптът се проваля, когато се изпълнява срещу бази данни на SQL Server 2000 (Някои от нашите клиенти все още използват SQL Server 2000) бази данни като бекенд на приложението.

Освен това данните по подразбиране не могат да бъдат генерирани от този процес.

За да преодолея този проблем, трябва да измисля решение, което може да сравнява бази данни и автоматично да генерира скрипт, който не трябва да се преглежда отново ръчно, преди да бъде изпратен на клиента.

Моля, предложете ефективна методология за такова генериране на SQL скрипт и предложете дали могат да се използват две различни бази данни или нещо подобно? Има ли някакъв инструментариум или API, който може да активира автоматизиране на изграждането на бази данни на SQL Server?

Благодаря на всички ви.

за разбирането

Стив


person Steve Johnson    schedule 18.06.2010    source източник


Отговори (2)


Опитайте да използвате SQL Examiner Suite за това: http://www.sqlaccessories.com/SQL_Examiner_Suite/

Инструментът сравнява както схема, така и данни и произвежда скриптове за синхронизиране (или скриптове за диференциали). Можете да автоматизирате създаването на скрипт с предоставения инструмент за команден ред.

person SQLDev    schedule 22.06.2010

Вместо да съпоставяте много индивидуални скриптове за набор от промени (и следователно понякога липсващи обекти), защо не използвате сравнение на схеми и сравнение на данни, за да създадете един скрипт от вашия проект за база данни, използвайки база данни, еквивалентна на тази на вашия клиент в целта? Това трябва да създаде скрипт, съобразен с техните изисквания.

При сравняване на данни можете да изключите записите на тестови данни, които не искате да бъдат изпратени на вашия клиент, като премахнете отметката от тях в долната мрежа.

person David Atkinson    schedule 18.06.2010
comment
Благодаря ви за прозрението. Можете ли да подчертаете как мога да изпълня задача за сравнение на данни само върху ИЗБРАНИТЕ таблици, като използвам файла TFSBuild.proj?? Можете ли да предоставите някаква проба или пример от всеки TFSBuild.proj файл? Използвам SQLDataCompareTask от DBPro Power Tools 2008 и TFS 2008 в задната част. - person Steve Johnson; 19.06.2010