Baza danych SQL Server wersjonowanie

głosy
288

Chcę, aby moje baz danych pod kontrolą wersji. Czy ktoś ma jakieś rady lub zalecanych artykułów do zaczynaj?

Będę zawsze chcą mieć przynajmniej niektóre dane tam (jak alumb wspomina: typy i administratorzy użytkownika). Ja też często chcą duży zbiór wygenerowanych danych testowych do pomiaru wydajności.

Utwórz 01/08/2008 o 19:33
źródło użytkownik
W innych językach...                            


29 odpowiedzi

głosy
169

Martin Fowler napisał mój ulubiony artykuł na ten temat, http://martinfowler.com/articles/evodb.html . I nie zdecyduje się umieścić schemat zrzuca się pod kontrolą wersji jako alumb i inni sugerują, bo chcą w łatwy sposób zaktualizować bazę produkcyjną.

Dla aplikacji internetowych, gdzie będę miał jedną instancję bazy danych produkcja, używam dwóch technik:

Skrypty aktualizacji bazy danych

Baza danych sekwencji zaktualizować skrypty, które zawierają DDL niezbędne do poruszania schematu z wersji N do N + 1. (Są iść w systemie kontroli wersji.) Tabelę _version_history_, coś podobnego

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

Pobiera nowy wpis za każdym razem upgrade uruchamia skrypt, który odpowiada nowej wersji.

Gwarantuje to, że jest to łatwe, aby zobaczyć, jaka wersja schematu bazy danych istnieje i że skrypty uaktualniania bazy danych są uruchamiane tylko raz. Ponownie, to nie zrzuty baz danych. Przeciwnie, każdy scenariusz przedstawia zmiany niezbędne, aby przejść z jednej wersji do następnego. Są skrypt, który można zastosować do swojej bazy produkcyjnej do „upgrade” go.

Twórca Sandbox Synchronizacja

  1. Skrypt do tworzenia kopii zapasowych, zdezynfekować i kurczyć bazę produkcyjną. Uruchomić to po każdej aktualizacji do produkcji DB.
  2. Skrypt do przywrócenia (i uszczypnąć, jeśli to konieczne) kopię zapasową na stanowisku programisty. Każdy deweloper uruchamia skrypt po każdej aktualizacji do produkcji DB.

Zastrzeżenie: Moi zautomatyzowane testy wykonywane na schema-prawidłowe, ale pustej bazy danych, więc ta rada nie będzie idealnie dostosowane do potrzeb klientów.

Odpowiedział 02/08/2008 o 18:33
źródło użytkownik

głosy
42

SQL Porównaj produkt czerwona brama nie tylko pozwala na wykonywanie porównań na poziomie obiektów oraz generowanie skryptów zmieni się z tym, ale również pozwala na eksport obiektów bazy danych w hierarchii folderów zorganizowanej przez typ obiektu, z jednym [ObjectName] .sql tworzenia skrypt za obiekt w tych katalogach. Hierarchia obiekt typu jest tak:

Funkcje \
\ Security
\ Security \ Role
\ Security \ Schematy
\ Security \ Users
\ Procedury składowane
\ Stoły

Jeśli zrzucić swoje skrypty do tego samego katalogu, po wprowadzeniu zmian, można to wykorzystać, aby zaktualizować repo SVN, i prowadź bieg historii każdego obiektu indywidualnie.

Odpowiedział 26/08/2008 o 08:23
źródło użytkownik

głosy
38

Jest to jeden z „trudnymi problemami” otaczającej zabudowy. O ile wiem, nie ma doskonałych rozwiązań.

Jeśli tylko trzeba przechowywać strukturę bazy danych i nie można wyeksportować bazę danych zapytań SQL. (W Enterprise Manager: Kliknij prawym przyciskiem myszy na bazie danych -> Generowanie skryptu SQL Polecam ustawienie „stworzyć jeden plik za obiekt” na zakładkę Opcje.) Następnie można popełnić tych plików tekstowych do svn i skorzystać z funkcji dyferencjałów i rejestrowania SVN jest.

Mam to ze sobą powiązane ze skryptu wsadowego, który zajmuje kilka parametrów i tworzy bazę danych. Dodałem też kilka dodatkowych kwerend, które wprowadzają dane domyślne jak typów użytkowników i administrator. (Jeśli chcesz uzyskać więcej informacji na ten temat, po coś i mogę umieścić skrypt gdzieś dostępne)

Jeśli trzeba zachować wszystkie dane, jak również, polecam utrzymując kopię zapasową bazy danych i korzystania Redgate ( http://www.red-gate.com/ ) produkty robić porównań. Nie są tanie, ale są warte każdego grosza.

Odpowiedział 01/08/2008 o 20:28
źródło użytkownik

głosy
37

Po pierwsze, należy wybrać system kontroli wersji, który jest odpowiedni dla Ciebie:

  • scentralizowany system kontroli wersji - standardowy system, w którym użytkownicy sprawdzić / sprawdzenia przed / po pracy na plikach, a pliki są przechowywane w jednym centralnym serwerze

  • Rozproszony system kontroli wersji - system, w którym repozytorium jest sklonowany, a każdy klon jest rzeczywiście pełna kopia zapasowa z repozytorium, więc jeśli to każdy klonuje repozytorium można stosować wszelkie awarie serwera, aby przywrócić go Po wyborze systemu do swoich potrzeb musisz skonfigurować repozytorium, które jest podstawą każdego systemu kontroli wersji Wszystko to jest opisane w poniższym artykule: http://solutioncenter.apexsql.com/sql-server-source-control-part-i-understanding -source-control-basics /

Po skonfigurowaniu repozytorium, aw przypadku centralnego systemu kontroli wersji folderu pracy, można przeczytać ten artykuł . To pokazuje, jak skonfigurować kontrolę źródła w środowisku programistycznym przy użyciu:

  • SQL Server Management Studio za pośrednictwem dostawcy MSSCCI,

  • Visual Studio i SQL Server Tools danych

  • Narzędzie 3rd party Kontrola ApexSQL Źródło
Odpowiedział 24/06/2015 o 10:36
źródło użytkownik

głosy
22

Tutaj w Red Gate oferujemy narzędzie, SQL źródła sterowania , który wykorzystuje technologię SQL Porównaj połączyć bazę danych z repozytorium SVN lub TFS. Narzędzie integruje się SSMS i pozwala pracować jak zwykle, oprócz tego, że pozwala teraz popełnić obiekty.

Dla podejścia opartego na migracje (bardziej nadaje się do automatycznych wdrożeń), oferujemy ReadyRoll , która tworzy i zarządza zestaw skryptów przyrostowych jako projektu Visual Studio.

W SQL źródła sterowania możliwe jest określenie statycznych tabel danych. Są one przechowywane w kontroli źródła, jak INSERT IGNORE oświadczenia.

Jeśli mówimy o danych testowych, chcielibyśmy polecić, że albo generowania danych testowych za pomocą narzędzia lub za pomocą skryptu po wysunięciu można zdefiniować, czy po prostu przywrócić kopię zapasową produkcji do środowiska dev.

Odpowiedział 01/07/2010 o 10:10
źródło użytkownik

głosy
20

Można zajrzeć do Liquibase ( http://www.liquibase.org/ ). Nawet jeśli nie używać samego narzędzie obsługuje koncepcje zarządzania zmianami w bazie lub refactoring całkiem dobrze.

Odpowiedział 16/09/2008 o 19:16
źródło użytkownik

głosy
17

+1 dla każdego, kto zalecanego narzędzia RedGate, z dodatkowym zaleceniem i ostrzeżeniem.

SqlCompare posiada również przyzwoicie udokumentowane API: tak można, na przykład, napisać aplikację konsoli, która synchronizuje folderu skrypty źródłowe sterowany z bazy testowej integracja CI na zaewidencjonowania, tak, że gdy ktoś sprawdza się zmiany do schematu z ich folderze scripts to automatycznie wdrażane wraz ze zmianą dopasowanie kodu aplikacji. To pomaga wypełnić lukę z programistów, którzy zapominają o propagowanie zmian w ich lokalnych db do wspólnego rozwoju DB (około połowa z nas, myślę :)).

Zastrzeżenie, że ze skryptów roztworze lub w inny sposób, narzędzia RedGate są wystarczająco gładka, że ​​łatwo zapomnieć o rzeczywistości SQL bazowych abstrakcję. W przypadku zmiany nazwy wszystkich kolumn w tabeli, SqlCompare nie ma sposobu, aby The Old kolumny do nowych kolumn i spadnie wszystkie dane w tabeli. będzie generować ostrzeżenia, ale widziałem, że ludzie kliknij przeszłość. Jest tu ogólny punkt wart co, myślę, że można tylko zautomatyzować DB wersjonowanie i uaktualnić do tej pory - abstrakcje są bardzo nieszczelne.

Odpowiedział 15/10/2008 o 10:44
źródło użytkownik

głosy
14

Z VS 2010, należy skorzystać z projektem bazy danych.

  1. Skrypt z bazy danych
  2. Dokonać zmian w skryptach lub bezpośrednio na serwerze db
  3. Synchronizować przy użyciu danych> Schema Porównaj

Stanowi idealne rozwiązanie DB wersjonowania i sprawia, że ​​synchronizowanie DB jest bardzo proste.

Odpowiedział 25/02/2011 o 21:18
źródło użytkownik

głosy
14

Używamy DBGhost zarządzać naszą bazę danych SQL. Następnie umieścić swoje skrypty do budowy nowej bazy danych w kontroli wersji, i będzie to albo zbudować nową bazę danych, lub ulepszyć dowolną istniejącą bazę danych do schematu w kontroli wersji. W ten sposób nie trzeba się martwić o tworzeniu skryptów zmiany (choć nadal można to zrobić, jeśli na przykład chcesz zmienić typ danych kolumny i trzeba konwertować dane).

Odpowiedział 07/08/2008 o 22:12
źródło użytkownik

głosy
12

Jest to dobre podejście, aby zapisać skryptów bazy danych pod kontrolą wersji ze scenariuszy zmian, dzięki czemu można ulepszyć dowolną jedną bazę danych masz. Również może chcesz zapisać schematów różnych wersjach, dzięki czemu można stworzyć pełną bazę danych bez konieczności stosowania wszystkich skryptów zmiany. Obchodzenie skrypty powinny być zautomatyzowane, dzięki czemu nie trzeba robić pracy ręcznej.

Myślę, że ważne jest, aby mieć osobne bazy danych dla każdego dewelopera, a nie korzystać ze wspólnej bazy danych. Dzięki temu programiści mogą tworzyć przypadki testowe i fazy rozwojowe niezależnie od innych deweloperów.

Narzędzie Automatyzacja powinna mieć środki do obsługi metadanych bazy danych, który mówi co bazy danych są w jakim stanie rozwoju i które tabele zawierają wersji sterowanych danych i tak dalej.

Odpowiedział 24/09/2008 o 07:11
źródło użytkownik

głosy
11

Można też spojrzeć na rozwiązania migracje. To pozwoli Ci określić schematu bazy danych w kodzie C # i toczyć wersję bazy danych w górę iw dół za pomocą MSBuild.

Obecnie używam DbUp , i to pracuje dobrze.

Odpowiedział 06/08/2008 o 23:51
źródło użytkownik

głosy
10

Nie wspominając o żadnych szczegółów na temat swojego środowiska docelowego lub ograniczeń, więc to nie może być w całości dotyczy ... ale jeśli szukasz sposobu, aby skutecznie śledzić rozwijającą schematu DB i nie są szkodliwe dla idei korzystania Ruby, migracje ActiveRecord są aż się aleja.

Migracje programowo określić przekształcenia bazy danych za pomocą łącza DSL Ruby; każda transformacja może być stosowane lub (zazwyczaj) wycofana, co pozwala na przejście do innej wersji schemacie DB w danym momencie. Plik definiowania tych przekształceń można sprawdzić pod kontrolą wersji, jak każdy inny kawałek kodu źródłowego.

Ponieważ migracje są częścią ActiveRecord , zazwyczaj znajdują zastosowanie w pełnym wymiarze stosu Rails aplikacji; Jednakże, można użyć ActiveRecord niezależnie od Rails przy minimalnym wysiłku. Patrz tutaj dla bardziej szczegółowego leczenia przy użyciu migracje AR poza granicami Rails.

Odpowiedział 02/08/2008 o 18:54
źródło użytkownik

głosy
9

Każda baza danych powinna być pod kontrolą kodu źródłowego. Brakuje to narzędzie do automatycznego skryptu wszystkie obiekty bazy danych - oraz „dane konfiguracyjne” - do pliku, który następnie można dodać do dowolnego systemu sterowania źródłem. Jeśli używasz programu SQL Server, a następnie moje rozwiązanie jest tutaj: http://dbsourcetools.codeplex.com/ . Baw się dobrze. - Nathan.

Odpowiedział 07/07/2009 o 13:58
źródło użytkownik

głosy
8

To proste.

  1. Kiedy projekt bazowy jest gotowy następnie należy utworzyć pełną skryptu bazy danych. Ten skrypt jest zobowiązana do SVN. Jest to pierwsza wersja.

  2. Po tym wszyscy deweloperzy tworzy scenariusze zmian (ALTER ..., nowe tabele, sprocs, etc).

  3. Kiedy trzeba aktualną wersję a następnie należy wykonać wszystkie nowe scenariusze zmian.

  4. Kiedy aplikacja zostanie zwolniony do produkcji następnie wrócić do 1 (ale to będzie kolejna wersja oczywiście).

Nant pomoże ci wykonać te skrypty zmian. :)

I pamiętaj. Wszystko działa dobrze, gdy jest dyscyplina. Za każdym razem, gdy baza danych jest zmiana popełnił następnie odpowiednie funkcje w kodzie są zbyt zaangażowani.

Odpowiedział 16/05/2009 o 12:31
źródło użytkownik

głosy
7

Aby zrobić zrzut do systemu kontroli kodu źródłowego, że trochę szybciej, można zobaczyć obiekty, które uległy zmianie od ostatniego razu, korzystając z informacji o wersji w sysobjects.

Setup: Tworzenie tabeli w każdej bazie danych, którą chcesz sprawdzić stopniowo do przechowywania informacji o wersji od czasu ostatniego jego sprawdzenie (pustym na pierwszym biegu). Usunąć tę tabelę, jeśli chcesz, aby ponownie zeskanować całe struktury danych.

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

Normalny tryb pracy: Możesz wziąć wyniki z tego sql, sql i generowania skryptów dla właśnie tych, które Cię interesują, i umieścić je w kontroli źródła swojego wyboru.

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

Uwaga: W przypadku korzystania z niestandardowych sortowania w dowolnych baz danych, trzeba będzie wymienić /* COLLATE */z sortowania bazy danych. to znaczyCOLLATE Latin1_General_CI_AI

Odpowiedział 24/09/2008 o 13:53
źródło użytkownik

głosy
7

Ponieważ nasza aplikacja ma działać w poprzek stwardnienie RDBMSs przechowujemy naszą definicję schematu kontroli wersji bazy danych za pomocą neutralnych Torque formacie (XML). Mamy również wersja Control dane odniesienia dla naszej bazie danych w formacie XML następująco (gdzie „związku” jest jedną z tabel referencyjnych):

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

Następnie za pomocą rodzimych narzędzi do generowania uaktualnienie schematu i dane referencyjne zaktualizować skrypty, które są wymagane, aby przejść od X w wersji bazy danych do wersji X + 1.

Odpowiedział 24/09/2008 o 06:49
źródło użytkownik

głosy
7

Jeśli masz małą bazę danych i chcesz wersją całą rzecz, ten skrypt wsadowy może pomóc. Odłączy, kompresuje i sprawdza plik MDF bazy danych MSSQL do Subversion.

Jeśli chcą głównie do wersji schematu i po prostu mieć niewielką ilość danych referencyjnych, można ewentualnie użyć poddźwiękowych Migracje aby poradzić. Zaletą jest, że można łatwo przenieść w górę lub w dół do żadnej konkretnej wersji.

Odpowiedział 07/08/2008 o 22:21
źródło użytkownik

głosy
6

Napisałem ten app jakiś czas temu, http://sqlschemasourcectrl.codeplex.com/ który skanuje MSFT SQL db tak często, jak chcesz i automatycznie zrzucić swoje obiekty (tabele, widoki, proca, funkcje, ustawienia języka SQL) w SVN. Działa jak marzenie. Używam go z Unfuddle (co pozwala mi się wpisy dotyczące checkins)

Odpowiedział 23/09/2010 o 03:35
źródło użytkownik

głosy
6

Mieliśmy potrzebę wersja naszej bazie danych SQL po tym migracji do platformy x64 i nasza stara wersja zerwał z migracji. Pisaliśmy aplikacji C #, który używany SQLDMO do zaplanowania wszystkich obiektów SQL do folderu:

                Korzeń
                    Nazwa serwera
                       NazwaBazyDanych
                          Obiekty schematu
                             Wyzwalacze bazy danych *
                                .ddltrigger.sql
                             Funkcje
                                ..function.sql
                             Bezpieczeństwo
                                role
                                   Role aplikacji
                                      .approle.sql
                                   Role baz danych
                                      .role.sql
                                schematy *
                                   .schema.sql
                                użytkownicy
                                   .user.sql
                             Przechowywanie
                                Pełne katalogi tekstowe *
                                   .fulltext.sql
                             Procedury składowane
                                ..proc.sql
                             Synonimy *
                                .synonym.sql
                             stoły
                                ..table.sql
                                ograniczenia
                                   ... chkconst.sql
                                   ... defconst.sql
                                indeksy
                                   ... index.sql
                                Klawiatura
                                   ... fkey.sql
                                   ... pkey.sql
                                   ... ukey.sql
                                Wyzwalacze
                                   ... trigger.sql
                             rodzaje
                                Zdefiniowane przez użytkownika typy danych
                                   ..uddt.sql
                                XML Schema Collections *
                                   ..xmlschema.sql
                             widoki
                                ..view.sql
                                indeksy
                                   ... index.sql
                                Wyzwalacze
                                   ... trigger.sql

Aplikacja będzie następnie porównać wersję nowo napisany do wersji zapisanej w SVN i gdyby nie było różnic byłoby zaktualizować SVN. Stwierdziliśmy, że prowadzenie procesu raz w nocy było wystarczające, ponieważ nie sprawiają, że wiele zmian do SQL. To pozwala nam na śledzenie zmian na wszystkich obiektów zależy nam na plus to pozwala nam odbudować pełną schematu w przypadku poważnego problemu.

Odpowiedział 09/10/2008 o 15:54
źródło użytkownik

głosy
6

Nie przechowujemy schematu bazy danych, możemy zapisać zmiany w bazie danych. Co możemy zrobić, to zapisać zmiany schematu, tak aby zbudować skrypt zmiana dla dowolnej wersji bazy danych i zastosować go do bazy danych naszych klientów. Napisałem aplikację użytkową bazy danych, który zostaje rozproszony z naszym głównym aplikacji, które można przeczytać, że skrypt i wiedzą, które muszą być stosowane aktualizacje. Ma też na tyle sprytu, aby odświeżyć widoków i procedur przechowywanych, ile potrzeba.

Odpowiedział 07/08/2008 o 00:00
źródło użytkownik

głosy
5

Zgadzam się z ESV odpowiedzi iz tego powodu zacząłem dokładnie mały projekt jakiś czas temu, aby pomóc utrzymać aktualizacji baz danych w bardzo prosty plik, który może następnie zostać utrzymane długi bok z kodu źródłowego. Umożliwia on łatwe aktualizacje dla programistów, jak i UAT i produkcji. Narzędzie działa dalej, ale SQL Server i MySQL.

Niektóre funkcje projektu:

  • Pozwala zmiany schematu
  • Pozwala drzewostanem wartość
  • Umożliwia oddzielne wkłady danych testowych dla np. UAT
  • Pozwala opcję wycofania (nie automatyczny)
  • Utrzymuje wsparcie dla serwera SQL i MySQL
  • Posiada możliwość importowania istniejącej bazy danych do kontroli wersji z jednym prostym poleceniem (serwer sql tylko ... nadal działa na MySQL)

Kod jest hostowany na Google Code. Proszę sprawdzić kod Google dla niektórych więcej informacji

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

Odpowiedział 24/02/2011 o 19:28
źródło użytkownik

głosy
5

Właśnie zaczął używać Team Foundation Server. Jeśli baza danych jest średniej wielkości, a następnie visual studio posiada kilka projektów integracji z wbudowanym porównania, dane porównać, narzędzia refactoring bazy danych, testowanie ramy bazy danych, a nawet narzędzia do generowania danych.

Jednak ten model nie pasuje do bardzo dużych baz danych lub stron trzecich (szyfrowanie), że obiekty bardzo dobrze. Więc, co zrobiliśmy jest przechowywanie tylko nasze dostosowanych obiektów. Visual Studio / Zespół Foundation Server działa bardzo dobrze na tym.

TFS szef Database arch. blog

site MS TFS

Odpowiedział 22/08/2008 o 18:13
źródło użytkownik

głosy
5

Typowym rozwiązaniem jest zrzut bazy danych i tworzenia kopii zapasowych w razie potrzeby te pliki.

W zależności od platformy rozwoju, nie może być opensource wtyczki dostępne. Rolling swój własny kod, aby to zrobić jest zazwyczaj dość trywialne.

Uwaga: Można wykonać kopię zapasową bazy danych zrzutu zamiast wprowadzenie go do kontroli wersji. Pliki mogą dostać ogromny szybki w kontroli wersji, i spowodować, że cały system kontroli źródła, by stać się powolny (ja przypominając CVS ​​horror w tej chwili).

Odpowiedział 03/08/2008 o 02:49
źródło użytkownik

głosy
4

Używam również w wersji przechowywanej w bazie danych za pośrednictwem bazy danych właściwości rozszerzone rodziny procedur. Moja aplikacja ma skrypty dla każdego etapu wersji (tj. Przenieść z 1,1 do 1,2). Po wdrożeniu, wygląda na obecnej wersji, a następnie uruchamia skrypty, jeden po drugim, aż osiągnie ostatnią wersję aplikacji. Nie ma skrypt, który ma prostą „” wersję ostateczną, nawet wdrożyć na czystej DB robi Rozmieszczanie za pomocą szeregu etapów uaktualnienia.

Teraz to, co chciałbym dodać, że widziałem dwa dni temu prezentacja na kampusie MS o nowym i nadchodzącym wydaniu VS DB. Prezentacja skupiła się szczególnie na ten temat, a ja wydmuchiwane z wody. powinno się to sprawdzić, nowe obiekty skupiają się na utrzymaniu definicji schematu w skryptach T-SQL (tworzy), silnik Runtime delta porównać wdrażania schematu z określonym schematem i robi zmienia Delta i integracja z integracji kodu źródłowego, do włącznie msbuild ciągłej integracji dla zautomatyzowanych kropli kompilacji. Spadek będzie zawierać nowy typ pliku, pliki .dbschema, które mogą być podjęte na terenie wdrażania oraz narzędzia wiersza poleceń można zrobić rzeczywisty „delty” i uruchomić instalację. Mam wpis w blogu na ten temat z linkami do pobrania VSDE, należy je sprawdzić:http://rusanu.com/2009/05/15/version-control-and-your-database/

Odpowiedział 15/05/2009 o 20:26
źródło użytkownik

głosy
4

Jakiś czas temu znalazłem moduł bas VB że używany DMO i VSS sprzeciwia się dostać cały db skryptów off i do VSS. Odwróciłem go w VB Script i napisałem go tutaj . Można łatwo wyjąć połączenia VSS i używać rzeczy DMO wygenerować wszystkie skrypty, a następnie zadzwonić SVN z tego samego pliku wsadowego, która wywołuje VBScript, aby sprawdzić je w?

Dave J

Odpowiedział 16/09/2008 o 18:55
źródło użytkownik

głosy
3

Jest to bardzo stare pytanie, jednak wiele z nich stara się rozwiązać ten nawet teraz. Wszystko, co musisz zrobić, to badania na temat Visual Studio bazy danych projektów. Bez tego każdy rozwój bazy danych wygląda bardzo słaby. Od organizacji kodu do wdrożenia do wersjonowania, upraszcza wszystko.

Odpowiedział 23/06/2015 o 11:26
źródło użytkownik

głosy
2

Sprawdź DBGhost http://www.innovartis.co.uk/ . Użyłem w sposób zautomatyzowany przez 2 lata teraz i działa świetnie. Pozwala to naszym DB buduje się dziać podobnie jak Java lub C build dzieje, z wyjątkiem bazy danych. Wiesz co mam na myśli.

Odpowiedział 02/11/2009 o 23:17
źródło użytkownik

głosy
2

Z mojego doświadczenia rozwiązanie jest dwojaki:

  1. Trzeba obsłużyć zmiany w bazie danych rozwoju, które są wykonywane przez wielu programistów podczas rozwoju.

  2. Trzeba obsłużyć uaktualnień baz danych w witrynach klientów.

W celu obsługi # 1 musisz silne narzędzie w bazie diff / scalania. Najlepszym narzędziem powinny być w stanie wykonać automatyczne scalanie jak najwięcej pozwalając jednocześnie ręcznie rozwiązać nieobsługiwany konfliktów.

Idealne narzędzie powinno uchwyt scalić operacji przy użyciu algorytmu scalania 3-drożny, która przynosi pod uwagę zmiany, które zostały dokonane w ich bazy danych i bazy danych w Wieliczce, w stosunku do bazy danych bazowych.

Napisałem funkcji handlowej, która zapewnia wsparcie ręcznego scalania baz danych SQLite i mam aktualnie dodając wsparcie dla 3-way algorytm scalania dla SQLite. Sprawdź to w http://www.sqlitecompare.com

W celu obsługi nr 2 trzeba będzie uaktualnienia ram w miejscu.

Podstawowym założeniem jest opracowanie automatycznego uaktualnienia ram, który wie, jak uaktualnić z istniejącego schematu SQL do nowszej schematu SQL i można zbudować ścieżkę aktualizacji dla każdej istniejącej instalacji DB.

Sprawdź mój artykuł na ten temat w http://www.codeproject.com/KB/database/sqlite_upgrade.aspx aby uzyskać ogólne pojęcie o tym, co mówię.

Powodzenia

Liron Levi

Odpowiedział 06/08/2009 o 11:28
źródło użytkownik

głosy
1

Proponuję za pomocą narzędzia do porównywania improwizować system kontroli wersji dla bazy danych. Dobrą alternatywą są xSQL Schema Porównaj i xSQL danych porównania .

Teraz, jeśli twoim celem jest, aby mieć tylko schemat bazy danych jest pod kontrolą wersji można po prostu użyć xSQL Schema Porównaj wygenerować xSQL Snapshots schematu i dodać te pliki w kontroli wersji. Niż, aby przywrócić lub aktualizacja do konkretnej wersji wystarczy porównać aktualną wersję bazy danych przy migawce dla wersji docelowej.

Niestety, jeśli chcesz mieć dane pod kontrolą wersji, jak również można użyć xSQL danych porównania do generowania skryptów zmiany dla ciebie bazy i dodać .sql pliki w kontroli wersji. Następnie można wykonać te skrypty, aby przywrócić / aktualizację do dowolnej wersji chcesz. Należy pamiętać, że dla „Odwróć” funkcjonalności musisz wygenerować skrypty zmian, które gdy są wykonywane uczyni Wersję 3 takie same jak w wersji 2, a dla „update” funkcjonalność, trzeba wygenerować skrypty zmiana, która nie odwrotnie.

Wreszcie z kilku podstawowych umiejętności programowania wsadowego można zautomatyzować cały proces za pomocą wersji wiersza poleceń xSQL Schema Porównaj i xSQL danych Porównaj

Disclaimer: jestem związany do xSQL.

Odpowiedział 10/01/2017 o 16:16
źródło użytkownik

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