2013-08-29 22 views
11

Próbuję stworzyć rozwiązanie bazy danych w Visual Studio 2012.Jak uniknąć odniesień do okrągłych visual studio 2012 projektu Database

Mam 5 baz danych, że wszystkie istniejące na tym samym serwerze, więc mam przywożone każdego z nich do projektu bazy danych.

Niestety istnieje sporo obiektów w bazach danych, które odwołują się do obiektów w innych bazach danych, więc próbowałem je rozwiązać, dodając odniesienie do bazy danych, aby utworzyć zmienną bazy danych w celu odniesienia się do tych wystąpień między bazami danych.

Problem polega na tym, że mam bazę danych A odwołującą się do B, a także B, która odwołuje się do A, i nie pozwoli mi dodać tych dwóch odniesień. Otrzymuję komunikat z informacją "Dodanie tego projektu jako odniesienia spowodowałoby zależność cykliczną".

Jakieś pomysły dotyczące podejścia do rozwiązania tego problemu? Sądzę, że jednym ze sposobów może być stworzenie rozwiązania dla każdej bazy danych, ale wolałbym nie, jeśli jest lepszy sposób na to.

Próbujemy skonfigurować automatyczną kompilację, więc naprawdę potrzebuję kompilacji projektów baz danych.

Odpowiedz

13

Będziesz chciał wyodrębnić schematy bazy danych do plików dacpac (zakładając, że korzystasz z plików SSDT SQLProj, a nie starych plików DBProj dla twoich projektów). Możesz to zrobić przez SSMS lub przez linię poleceń SQLPackage. Po wyodrębnieniu umieść je w miejscu, w które mogą trafić wszystkie projekty (najlepiej pod kontrolą kodu źródłowego, aby wszyscy inni mogli się do niego odwoływać). Dodaj te pliki dacpac do projektów jako odniesienia do bazy danych, prawdopodobnie bez opcji użycia zmiennej dla nazwy bazy danych.

Pisałem się dodanie odniesienia do bazy danych na moim blogu tutaj: http://schottsql.blogspot.com/2012/10/ssdt-external-database-references.html

Jedna uwaga dodatkowa - jeśli jesteś budowy nowych baz danych z tych projektów, będziesz prawdopodobnie musiał przejść przez kilka podań. Wyłącz opcję uruchamiania jako transakcję i niepowodzenia, gdy wystąpi błąd, więc niektóre obiekty zostaną utworzone, powtarzaj w razie potrzeby, aż wszystkie obiekty zostaną utworzone. Użyłem zmiennej w moich projektach o nazwie "DeployType" i skonfigurowałem swoje skrypty przed i po wdrożeniu, aby obsłużyć zmienną DeployType "Nowy" inaczej, aby nie próbować wypełniać/aktualizować żadnych danych dla "nowych" wersji.

Powiązane problemy