2012-12-14 18 views
12

Używam programu SQL Server 2012 i VS 2010 z zainstalowanym SSDT (SQL Server Data Tools). Mój dev DB używa zapisanych proców, funkcji, obiektów CLR itp. Ma migawkę danych prod około 500GB.Jak korzystać z projektu bazy danych SQL Server

Utworzono projekt bazy danych SQL Server, a następnie zaimportowałem bazę danych. Spowoduje to utworzenie wszystkich tabel, widoków, procesów i plików funkcji pod nazwami schematów. Świetne rzeczy - teraz mogę zrobić kontrolę wersji, tak jak w innych projektach VS, tworzyć wdrożenia itp. Jak dotąd, tak dobrze.

Ale, nie jestem zdezorientowany co do tego, jaki powinien być mój proces rozwoju dla zmiany/dodawania proców/tabel w ramach projektu bazy danych SQL Server. Wygląda na to, że wszelkie zmiany, które wprowadzam, są stosowane do niektórych baz danych LocalDb/Projects, a NIE do mojej bazy danych dev.

Czy mam utworzyć wszystkie moje obiekty w tym LocalDb, a następnie zbudować i wdrożyć do mojej bazy danych dev poprzez publikację? Martwię się o moje istniejące tabele w bazie danych deweloperów, ponieważ jeśli proces publikowania spadnie i ponownie utworzy tabele, stracę swoją migawkę danych prod.

Jaka jest właściwa procedura programowania do zastosowania w projekcie bazy danych SQL Server?

+2

można skonfigurować do którego DB że DBPROJ wdraża do. Ostrzeże Cię, jeśli nie może dokonać zmiany "łamania", tj. Takiej, która wymagałaby upuszczenia tabeli i utraty danych. Możesz także wygenerować skrypt zmiany, zamiast bezpośrednio zmieniać DDL - to daje możliwość przeglądania zmian. – StuartLC

+0

Czy nikt nie używa SSDT do opracowania procedur/widoków/funcitonów? Ponieważ muszę wierzyć, że jest lepsza odpowiedź niż ponowne opublikowanie i "spróbuj". Może testy jednostek są tym, co Microsoft zamierzał użyć? Co robią inni użytkownicy? –

Odpowiedz

4
  1. Wprowadź zmiany w projekcie DB VS.

  2. Wdrażanie zmian localDB przetestować

  3. Publikowanie bazy danych na serwerze produkcyjnym. Wolę używać Schema Compare, aby zrobić to ręcznie, ale możesz również opublikować projekt za pomocą prawego przycisku myszy -> menu publikowania (który również utworzy profil publikowania) lub używając argumentów wiersza poleceń. Proces publikowania nie zostanie upuszczony i nie utworzy tabel (chyba, że ​​powiesz mu, aby zrezygnował z odtworzenia całego DB).

Alternatywnie, w ustawieniach projektu można zmienić ciąg połączenia tak, aby wskazywał na serwer produkcyjny (jak wskazano w komentarzu). Jednak zalecam od tego, ponieważ będzie on próbował publikować na serwerze produkcyjnym za każdym razem, gdy uruchomisz lokalną kompilację (F5).

5

Pomyśl o źródłowej bazie danych (w twoim przypadku, projekcie bazy danych) jako o stanie "być" po wdrożeniu. Po rozpoczęciu wdrażania plik wykonywalny (SqlPackage.exe) porównuje źródło z celem i generuje skrypt różnicowy/delta, aby cel wyglądał jak źródło. Dlatego nie musimy już określać CREATE ani ALTER; narzędzie to wyodrębnia. Aby odpowiedzieć na twoje pytanie dotyczące stałego rozwoju, możesz rozwijać się w dowolny sposób. Możesz rozwijać się w plikach projektu i publikować je we wspólnej bazie danych Dev (powiedzmy, jeśli jesteś w zespole), lub możesz rozwijać w bazie danych narzędzia takie jak SQL Server Management Studio (SSMS) i synchronizować z plikami projektu z porównaniem schematu (używam tej ostatniej techniki, ponieważ lubię SSMS).

Do wdrożenia konieczne będzie zainstalowanie SSDT na komputerze, z którego uruchamiane jest wdrożenie (dyski SSDT są dostarczane z programem SQL Server 2012 i nowszym, nie wiem o programie SQL Server 2008). Możesz tworzyć skrypty, aby uprościć wdrażanie. Zasadniczo wywołasz SqlPackage.exe (w X: \ Program Files (x86) \ Microsoft SQL Server \ nnn \ DAC \ bin) z akcją i źródłem. Używam również Opublikuj profile, aby zadbać o większość właściwości polecenia.Więc przykładem wdrażania może wyglądać następująco:

SqlPackage.exe /Action:Publish /SourceFile:MyDatabase.dacpac /Profile:MyProfile.publish.xml 

Aby uzyskać więcej informacji: SQL Server Data Tools Documentation http://msdn.microsoft.com/en-us/library/hh272686(v=vs.103).aspx

SqlPackage.exe Documentation http://msdn.microsoft.com/en-us/library/hh550080(v=vs.103).aspx

+0

Chyba brakuje mi części "Opracuj w bazie danych za pomocą narzędzia takiego jak SSMS" - jak to wygląda przy korzystaniu z projektu DB? Jestem przyzwyczajony do tego, że mam pliki skryptów z 'IF EXISTS ... DROP ...' na górze i 'GO ... EXEC SprocName @ params' ... na dole. Mogę więc edytować sproc, nacisnąć F5 i zobaczyć nowe wyniki. Ale jeśli zapiszę ten plik do projektu DB, będzie narzekał, ponieważ TYLKO chce instrukcji CREATE. Nie chcę ręcznie ustawiać tego za każdym razem, gdy wprowadzam niewielką zmianę na sproc. Jak wygląda proces tworzenia/testowania zmiany w stylu sproc/view? –

+0

Jedną z pierwszych informacji na temat SSDT, podobnie jak w przypadku każdego narzędzia, jest jego pogląd na świat. Jak już wspomniałem w swoim poście, SSDT widzi parametr/SourceFile jako stan docelowej bazy danych na końcu wdrożenia. Aby się tam dostać, generuje skrypt delta, w oparciu o porównanie celu ze źródłem, aby tak się stało. Jeśli twoja procedura składowana jeszcze nie istnieje w celu, generuje instrukcję CREATE PROCEDURE, aby ją utworzyć; w przeciwnym razie generuje instrukcję ALTER PROCEDURE, aby ją zaktualizować. –

+0

Przez "Opracuj w bazie danych za pomocą narzędzia takiego jak SSMS" mam na myśli użycie SSMS do zapisywania twoich procedur przechowywanych, jak to zwykle robiliśmy. Ponieważ pracujesz bezpośrednio z obiektami bazy danych, musisz odpowiednio użyć CREATE/ALTER. Kiedy skończysz, wróć do projektu bazy danych i użyj schematu Porównaj, aby zsynchronizować nową lub zaktualizowaną procedurę przechowywaną z kodem w projekcie bazy danych. –

Powiązane problemy