2010-05-19 12 views
7

Właśnie zacząłem używać projektu bazy danych VS2010 do zarządzania wydaniem aktualizacji do istniejącej bazy danych.Jak ustawić opcje wdrażania, aby skrypować przyrostową wersję projektu bazy danych Visual Studio 2010?

Chcę, aby opcja wdrożenia generowała skrypt, który będzie zawierał komendy służące do zmiany istniejącej bazy danych, zamiast tworzenia zupełnie nowego.

E.g Mam 10 istniejących tabel - jeden z nich upuszczam w nowej wersji i tworzę nowe sprocs. Chcę tylko, aby wdrożenie służyło do skryptowania poleceń Upuść tabelę i poleceń Create Procedure.

Używam VS2010 Premium.

Czy istnieje zalecane standardowe podejście, które można zastosować, aby zarządzać DB w projekcie od utworzenia początkowego do przyrostowego?

Dzięki!

Odpowiedz

5

W pliku projektu .sqldeployment znajduje się "Zawsze odtwarzaj bazę danych". Usunięcie zaznaczenia tej opcji spowoduje wygenerowanie automatycznie wygenerowanego skryptu SQL, który będzie stopniowo aktualizować bazę danych bez wcześniejszego jej upuszczania.

Istnieje również opcja "Generuj instrukcje DROP dla obiektów znajdujących się w docelowym zbiorze danych, ale które nie znajdują się w projekcie bazy danych." Musisz zaznaczyć tę opcję, jeśli chcesz, aby tabele, przechowywane procesy itp. Zostały usunięte, jeśli zostały usunięte w projekcie bazy danych. Spowoduje to usunięcie dowolnej tabeli itp., Którą użytkownicy mogli utworzyć samodzielnie w celu testowania, debugowania itp.

Aby zmienić opcje w pliku .sqldeployment. Otwórz plik w Visual Studio. Albo rozwiń projekt bazy danych w eksploratorze rozwiązań, kliknij dwukrotnie plik .sqldeployment (prawdopodobnie znajdzie się on w folderze Właściwości w projekcie DB). Lub otwórz stronę właściwości projektu bazy danych i kliknij przycisk "Edytuj ..." obok "Plik konfiguracji wdrożenia". Zaznacz lub odznacz opcje, które chcesz wdrożyć podczas wdrażania bazy danych.

Używam VSDBCMD.exe do budowania jednym kliknięciem & wdrażaj utworzone przeze mnie skrypty. Pracuje bardzo dobrze. VSDBCMD używa pliku .sqldeployment - domyślny plik .sqldeployment jest określony w pliku .deploymanifest, ale można go przesłonić, określając go jako parametr podczas wykonywania VSDBCMD.Ponadto wierzę, że Visual Studio używa VSDBCMD pod okładkami, gdy wdraża projekt bazy danych, ale po prostu zakładam, że tak jest, ponieważ funkcjonalność jest prawie identyczna.

+0

Dzięki za informację Adam. Jak śledziłbyś każdą wersję DB przez całe życie? Na przykład, jeśli wydałem 5 wersji DB, jak mogę przywrócić do wersji 3? Czy mam utworzony skrypt linii bazowej, a następnie zapisać każdy z automatycznie generowanych przyrostowych skryptów aktualizacji? – littlechris

+1

Dodajemy wszystkie pliki SQL w projekcie VS2010 DB do kontroli wersji i używamy etykiet do śledzenia każdej wersji. Aby przywrócić wersję 3, zsynchronizuj ją z etykietą v3. Naprawdę powinieneś używać wersji do kontroli bazy danych. Jeff Atwood napisał 2 artykuły na blogu na temat kontroli wersji bazy danych, które polecam czytając: Czy Twoja baza danych jest pod kontrolą wersji? zttp: //www.codinghorror.com/blog/2006/12/is-your-database-under-version-control.html Pobierz bazę danych pod kontrolą wersji http://www.codinghorror.com/blog/2008 /02/get-your-database-under-version-control.html –

4

Po raz kolejny zadałem podobne pytanie na temat MSDN Forums i powiedziano mi, że zalecanym sposobem jest użycie VSDBCMD. Zasadniczo, tworzysz plik schematu z projektu bazy danych, który zawiera wszystkie informacje o twojej bazie danych, a następnie uruchamiasz VSDBCMD w celu porównania twojego schematu z docelową bazą danych. To z kolei tworzy skrypt aktualizujący docelową bazę danych do bieżącego schematu.

Uzasadnieniem takiego podejścia jest to, że ty i ja możemy myśleć, że wiemy, jak wygląda schemat docelowej bazy danych, tak naprawdę nie możemy być pewni, dopóki nie pozwolimy VSDBCMD przeprowadzić porównania. Kto wie, ktoś inny mógł zmodyfikować schemat w docelowej bazie danych bez naszej wiedzy, więc nasz skrypt zmian może zakończyć się niepowodzeniem z jakiegoś nieznanego powodu.

Naprawdę nie byłem bardzo zadowolony z tego podejścia i skończyłem, że nadal używam mojego "starego podejścia" do ręcznego kodowania skryptów zmian, kiedy to konieczne, ale jestem ciekawy, czy coś zmieniło się w 2010 roku, co sprawia, że nieco łatwiej pracować. Naprawdę chciałbym zobaczyć prosty interfejs API, który robi to, co robi VSDBCMD, więc mogę umieścić GUI razem, aby uprościć aktualizację docelowej (w moim przypadku, klienta) bazy danych, bez osoby prowadzącej aktualizację musi być DBA.

Powiązane problemy