Wdrażanie baz danych SQL Server z testu na żywo

głosy
24

Zastanawiam się, jak wy zarządzać rozmieszczenie bazy danych między 2 serwerami SQL, w szczególności SQL Server 2005. Teraz jest rozwój i żywe jeden. Jak powinno to być częścią buildscript (partia standardowych okien, nawet zrobić z obecnym złożoności tych skryptów, mogę przejść do PowerShell lub dłużej), Enterprise Manager / Management Studio Express nie liczą.

Czy wystarczy skopiować plik .mdf i dołączyć go? Zawsze jestem nieco ostrożność podczas pracy z danych binarnych, jak to wydaje się być kwestią Kompatybilność (mimo rozwoju i żyć powinien uruchomić tę samą wersję serwera przez cały czas).

Lub - ze względu na brak „EXPLAIN CREATE TABLE” w T-SQL - robisz coś, wywozi do istniejącej bazy danych SQL skrypty, które można uruchomić na serwerze docelowym? Jeśli tak, to czy jest to narzędzie, które może automatycznie zrzucić danej bazy danych do zapytań SQL i który działa z linii poleceń? (Ponownie, Enterprise Manager / Management Studio Express nie liczą).

I wreszcie - biorąc pod uwagę fakt, że na żywo baza danych zawiera już dane, rozmieszczenie może nie obejmować tworzenie wszystkich tabel, ale raczej sprawdzenie różnicy w strukturze i ALTER TABLE żywe te zamiast, który może również potrzebne dane identyfikacyjne / konwersji przy zmianie istniejących pól.

Teraz słyszę wiele wspaniałych rzeczy o Red Gate produktów, ale dla projektów hobby, cena jest nieco strome.

Więc, co używasz do automatycznego rozmieszczenia baz danych SQL Server z testu żyć?

Utwórz 03/08/2008 o 00:30
źródło użytkownik
W innych językach...                            


14 odpowiedzi

głosy
19

Wziąłem do ręki kodowania wszystkich moich DDL (tworzy / zmieniać / usuwać) sprawozdania, dodając je do mojego .sln jako pliki tekstowe, a przy użyciu normalnego wersjonowanie (przy użyciu Subversion, ale każda kontrola korekta powinna działać). W ten sposób nie tylko uzyskać korzyści z wersjami, ale żyć z aktualizacją dev / etap jest taki sam proces dla kodu i bazy danych - tagi, gałęzie itd pracy wszystko jedno.

W przeciwnym razie, zgadzam Redgate jest drogie, jeśli nie masz firmę kupując go dla Ciebie. Jeśli można uzyskać firmę kupić go dla ciebie chociaż, to naprawdę warto!

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

głosy
14

Dla moich projektów I przemian SQL Porównaj z Red Gate i bazy danych wydawnictwa kreatora z Microsoft, który można pobrać za darmo tutaj .

Kreator nie jest tak zręczny jak Porównaj SQL lub danych SQL Porównaj ale załatwia sprawę. Jednym z problemów jest to, że generuje ona skrypty mogą potrzebować przegrupowanie i / lub edycję płynąć w jednym ujęciu.

Z dobrych stron, można go przenieść schematu i danych, które nie są szkodliwe dla bezpłatnego narzędzia.

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

głosy
7

Nie zapomnij rozwiązanie Microsoftu na problem: Visual Studio 2008 Database Edition . Zawiera narzędzia do wdrażania zmian w bazach danych, tworząc diff między bazami danych dla schematu i / lub zmiany danych, testów jednostkowych, generowania danych testowych.

Jest to dość drogie, ale użyłem edycję próbną na chwilę i że to było genialne. To sprawia, że ​​baza danych, jak łatwo pracować jak każdy inny kawałek kodu.

Odpowiedział 18/08/2008 o 11:47
źródło użytkownik

głosy
6

Jak Rob Allen, używam SQL Porównaj / Dane Porównaj przez RedGate. Ja również użyć kreatora Database Publishing przez Microsoft. Mam też aplikację konsoli pisałem w C #, który zabierze skrypt SQL i prowadzi go na serwerze. W ten sposób można uruchomić dużych skryptów z poleceniami „Go” w nim z linii poleceń lub w skrypcie.

Używam bibliotek Microsoft.SqlServer.BatchParser.dll i Microsoft.SqlServer.ConnectionInfo.dll w aplikacji konsoli.

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

głosy
4

Pracuję w ten sam sposób Karl robi, utrzymując wszystkich moich skryptów SQL do tworzenia i zmieniania tabel w pliku tekstowym, że zachowanie kontroli źródłowej. W rzeczywistości, aby uniknąć problemu konieczności posiadania skrypt bada żywo bazy danych, aby ustalić, co do uruchomienia zmienia, zazwyczaj działa tak:

  • W pierwszej wersji, umieścić wszystko podczas testowania w jednym skrypcie SQL i traktować wszystkie tabele jak CREATE. Oznacza to, że w końcu spada i readding tabele dużo podczas testów, ale to nie jest wielka sprawa wcześnie do projektu (ponieważ jestem zwykle hacking danych używam w tym momencie i tak).
  • Na wszystkich kolejnych wersjach zrobić dwie rzeczy: Robię nowy plik tekstowy do przechowywania skryptów SQL Upgrade, które zawierają tylko te zmienia dla tej wersji. I wprowadzić zmiany do oryginału, należy utworzyć nową skrypt bazy danych, jak również. W ten sposób upgrade tylko uruchamia skrypt aktualizacji, ale jeśli mamy odtworzyć DB nie musimy uruchomić 100 skrypty się tam dostać.
  • W zależności od tego, jak ja wdrażania zmian DB, ja też zazwyczaj umieścić tablicę wersji w DB, który posiada wersję DB. Wtedy, zamiast wprowadzać żadnych ludzkich decyzji, o których skrypty do pracy, niezależnie od kodu mam uruchomione Create / uaktualnienia skryptów używa wersji w celu ustalenia co do uruchomienia.

Jedyną rzeczą, nie będzie to zrobić, to pomóc, jeśli część tego, co jesteś w ruchu z testu do produkcji jest dane, ale jeśli chcesz zarządzać strukturę i nie zapłacić za miły, ale drogiego pakietu zarządzania DB, nie jest to bardzo trudne. Ja również okazało się, że to całkiem dobry sposób na utrzymanie psychiczną śledzić swoje DB.

Odpowiedział 03/08/2008 o 01:37
źródło użytkownik

głosy
3

Korzystanie SMO / DMO, nie jest to zbyt trudne, aby wygenerować skrypt swojego schematu. Dane jest trochę więcej zabawy, ale nadal wykonalne.

W ogóle uważam, podejście „Script It”, ale może warto rozważyć coś wzdłuż tych linii:

  • Rozróżniać rozwoju i rozmieszczenia, tak że można rozwijać z podzbioru danych ... to chciałbym stworzyć narzędzie do rozwijanego po prostu niektóre dane produkcyjne lub generowania fałszywych danych, gdzie chodzi o bezpieczeństwo.
  • Dla rozwoju zespołu, każda zmiana w bazie danych będą musiały być koordynowane między swoimi członkami zespołu. Zmiany schematu i danych mogą być przemieszane, ale pojedynczy skrypt powinien włączyć daną funkcję. Po wszystkie funkcje są gotowe, to pakiet nich w jednym pliku SQL i uruchom że przed przywracania produkcji.
  • Gdy inscenizacja rozjaśniał akceptacją, ponownie uruchom plik pojedynczy SQL na maszynie produkcyjnej.

Użyłem narzędzia Red Gate i są świetne narzędzia, ale jeśli nie możesz sobie na to pozwolić, budowanie narzędzi i działa w ten sposób nie jest zbyt daleko od ideału.

Odpowiedział 04/08/2008 o 18:38
źródło użytkownik

głosy
3

Jeśli masz firmę, kupując go, Toad z Quest Software oferuje tego rodzaju funkcji zarządzania zbudowany w. Jest to w zasadzie praca dwa kliknięcia porównanie dwóch schematów i wygenerować skrypt synchronizacji z jednego do drugiego.

Mają wydań dla najbardziej popularnych baz danych, w tym oczywiście SQL Server.

Odpowiedział 03/08/2008 o 01:22
źródło użytkownik

głosy
2

Ja również utrzymać skrypty dla wszystkich moich obiektów i danych. Do wdrażania pisałem darmowe narzędzie - http://www.sqldart.com . To będzie pozwalają zmienić kolejność plików skryptów i potrwa całe mnóstwo w obrębie transakcji.

Odpowiedział 08/06/2010 o 22:33
źródło użytkownik

głosy
2

RedGate SqlCompare jest droga moim zdaniem. Robimy instalację DB regularnie i od tego zacząłem używać tego narzędzia nigdy nie spojrzał. Bardzo intuicyjny interfejs i oszczędza dużo czasu w końcu.

Wersja Pro zajmie skryptów dla integracji kontroli źródła, jak również.

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

głosy
2

Używam poddźwiękowych migracje mechanizm tak, mam tylko dll z klas squential aby mieć 2 sposoby, w górę iw dół. Istnieje ciągła integracja hak skrypt / build do nant, tak że mogę zautomatyzować modernizacji mojej bazy danych.

Nie jest to najlepszy thign na świecie, ale to bije pisanie DDL.

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

głosy
2

Zgadzam się z utrzymując wszystko w kontroli źródła i ręcznie skryptów wszystkie zmiany. Zmiany w schemacie dla pojedynczego wydania przejść do pliku skryptowego stworzonego specjalnie dla tego wydania. Wszystkie przechowywane procs, widoki, itp powinien iść do poszczególnych plików i traktowane jak .cs lub aspx miarę kontrola źródło idzie. Używam skryptu powershell, aby wygenerować jeden duży plik .sql do aktualizacji programowalność rzeczy.

Nie lubię zautomatyzowanie stosowanie zmian schematu, jak nowe tabele, nowe kolumny itp Podczas uwalniania produkcyjną, chciałbym przejść przez komendę zmiana skryptu przez polecenie, aby upewnić się, że każdy z nich działa zgodnie z oczekiwaniami. Nie ma nic gorszego niż uruchomienie skryptu duża zmiana na produkcji i uzyskiwanie błędy, ponieważ zapomniał jakiś mały szczegół, że nie zaprezentowała się w rozwoju.

Dowiedziałem się również, że indeksy muszą być traktowane podobnie jak pliki kodu i wprowadzane do kontroli źródła.

I powinno się mieć więcej niż 2 baz danych - dev i żyć. trzeba mieć bazę dev że wszyscy używają do codziennych zadań Dev. Następnie baza inscenizacja, która naśladuje wytwarzanie i jest używany, aby wykonać testy integracyjne. Wtedy może się pełna ostatni egzemplarz produkcji (przywrócony z pełnej kopii zapasowej), jeśli jest to możliwe, więc Twoja ostatnia tura testów instalacji idzie przed czymś, co jest tak blisko prawdziwe, jak to możliwe.

Odpowiedział 13/08/2008 o 16:41
źródło użytkownik

głosy
2

Zgadzam się, że wszystko skryptów jest najlepszym sposobem, aby przejść i to co opowiadam w pracy. Powinieneś skrypt wszystko od DB i tworzenie obiektu do wypełniania tabel przeglądowych.

Cokolwiek robisz w interfejsie tylko nie przełoży (szczególnie dla zmian ... nie tyle dla pierwszych wdrożeń) i skończy się wymagająca narzędzi, takich jak to, co oferuje Redgate.

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

głosy
1

Obecnie pracuję samo do ciebie. Nie tylko wdrażanie baz danych SQL Server z testu żyć, ale także cały proces od lokalnych -> Integracja -> Test -> Produkcja. Więc co może sprawić mi łatwo codziennie ja zrobić zadanie NANT z Red-gate SQL porównania . Nie pracuję dla RedGate ale muszę powiedzieć, że to dobry wybór.

Odpowiedział 27/11/2008 o 04:15
źródło użytkownik

głosy
1

Robię całe stworzenie bazy danych jako DDL, a następnie owinąć że DDL do klasy schematu maintainence. Mogę robić różne rzeczy, aby utworzyć DDL na pierwszym miejscu, ale zasadniczo robię cały maint schematu w kodzie. Oznacza to również, że jeśli ktoś musi zrobić non DDL rzeczy, które nie mapować dobrze do SQL można napisać logiki proceduralnej i uruchomić go między bryłami DDL / DML.

Moi DBS wtedy mamy tabelę, która określa aktualną wersję więc można kodować stosunkowo prosty zestaw testów:

  1. Czy DB istnieje? Jeśli nie należy go utworzyć.
  2. Czy DB aktualna wersja? Jeśli nie, to uruchomić metody, w kolejności, które przynoszą schematu na bieżąco (może chcesz poprosi użytkownika, aby potwierdzić i - najlepiej - zrób kopie zapasowe w tym momencie).

Dla pojedynczej aplikacji użytkownika wystarczy uruchomić to w miejscu, dla aplikacji sieci web mamy obecnie, aby zablokować użytkownikowi, czy wersje nie pasują i mają samodzielnym schematu maint aplikację możemy uruchomić. Dla wielu użytkowników będzie to zależeć od konkretnego środowiska.

Przewaga? Cóż mam bardzo wysoki poziom zaufania, że ​​schemat dla aplikacji, które korzystają z tej metodologii jest spójne we wszystkich przypadkach tych zastosowań. Nie jest idealny, istnieją problemy, ale działa ...

Istnieją pewne problemy przy opracowywaniu w zespole, ale to mniej lub bardziej dana tak!

Murph

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

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