2016-06-20 12 views
5

Mam projekt bazy danych SQL Server 2014 w VS 2015. Stworzyłem również kilka schematów schematów w SSMS (ponieważ VS nie ma żadnych schematy schematów, o których jestem świadomy). Jest to początek cyklu życia projektu i pojawia się wiele refaktoryzacji. Diagramy SSMS dobrze się aktualizują w obliczu zmian - co jest naprawdę miłe. Chciałbym zachować diagramy na (ponownym) opublikowaniu w środowisku deweloperów.Jak uniknąć usuwania diagramów z bazy danych podczas publikowania w Visual Studio 2015

Problem polega na tym, aby nadążyć za refaktoringami, musiałbym usunąć elementy z docelowej bazy danych, które nie są już w projekcie (lub po prostu odtworzyć docelową bazę danych w środowisku programisty) ... ale to spowoduje, że moje diagramy zostaną zdmuchnięte. Nie wymyśliłem sposobu, aby tego uniknąć i to jest kopnięcie w goleń, aby odbudować schematy. Czy ktoś wymyślił dość czysty sposób na stopniowe publikowanie podczas usuwania projektu z zachowaniem schematów?

Odpowiedz

3

Przed odtworzeniem bazy danych dewelopera należy przejść do diagramu globalnej tabeli tymczasowej lub tabeli w innej bazie danych. Można to zrobić poprzez uruchomienie czegoś takiego:

IF (OBJECT_ID(N'tempdb..##TempTable') IS NOT NULL) DROP TABLE ##TempTable ; 

SELECT * 
INTO ##TempTable 
FROM sysdiagrams 

Niestety nie można pomyślnie uruchomić to ze skryptu pre-deploy jeśli spadek i odtworzyć bazę dev. Skrypt przed wdrożeniem działa po usunięciu. Tak więc chciałbym przyjrzeć się tworzeniu skryptu powershell, który publikuje dacpac, a przed krokiem wdrożenia dacpac wykonaj powyższą instrukcję, aby rozmieścić diagramy.

Po dacpac jest wdrożony, należy uruchomić coś takiego odtworzyć schematy:

INSERT INTO dbo.sysdiagrams (name, principal_id, version, definition) 
SELECT name, principal_id, version, definition 
FROM ##TempTable AS tt 
+0

Tak, to jest dobre podejście ... będzie je żuć. Zauważyłem, że jest więcej obiektów niż tylko sysdiagramów - są przynajmniej niektóre sprocs ... i wydają się opisywać obiekty, aby SSMS umieścił je w folderach "System * xxx *". – Clay

+0

To prawda. Są pewne rzeczy dodane tylko do tych nagrań. Zobaczę, czy mogę znaleźć informacje, jak łatwo je odtworzyć. –

+0

Cóż ... jeśli po prostu "przywrócę je" do tempdb (na pierwszą część odpowiedzi), mogę po prostu trafić folder SSMS, który tworzy obiekty ... i wtedy mogę uruchomić nieco zmodyfikowany wariant druga część. To może być na razie wystarczające ... ale pozwolę temu pytaniu jeszcze bardziej potrawić - zobacz, czy ktoś jeszcze ma jakieś myśli. Doceniam Twój wysiłek! – Clay

0

Nie mam dużego doświadczenia z rozwojem bazy danych visual studio, więc jest to bardziej pomysł niż rzeczywista odpowiedź.

Jeśli utworzyłeś zmaterializowany (indeksowany) widok dbo.sysdiagramów i włączy go do projektu VS, czy zapobiegnie to dmuchaniu plików dbo.sys po wdrożeniu?

create view test with schemabinding as select name, principal_id,diagram_id,version, definition from dbo.sysdiagrams 

CREATE UNIQUE CLUSTERED INDEX CIX_test_diag 
    ON dbo.test(name, principal_id,diagram_id,version) 
+0

Dzięki - rozważałbym włączenie źródła do artefaktów sysdiagrams bezpośrednio do mojego projektu - ale naprawdę nie lubię "posiadać" tych obiektów, ponieważ niektóre wersje narzędzi mogą dowolnie zmieniać implementację w przyszłości. Naprawdę szukam API do przechwytywania i rekonstrukcji diagramów. Niestety, nie znalazłem takiego API ... i muszę go odrzucić.Obawiam się, że tworzenie indeksu nie zachowałoby wszystkich artefaktów (w grę wchodzą również proc i rozszerzone właściwości). Jestem pewien, że spowodowałoby to również przerwę w publikacji. – Clay

+1

Czy widzisz to: http://www.codeproject.com/Articles/15080/Script-SQL-Server-diagrams-to-a-file? Wygląda na to, że próbują rozwiązać ten sam problem, którym jesteś. Jest podobny do tego, co Clay zalecał, ale jest ładnie zapakowany. Chociaż jest to T-SQL, a nie API. –

+0

Interesujące - trochę inne niż to, do czego próbuję się dostać, ale całkiem nieźle. między tym a czym odpowiedział @db_brad, myślę, że opracowałem rozwiązanie. – Clay

Powiązane problemy