Visual Studio 2010 wprowadza projekty baz danych i całą gamę powiązanych funkcji, które rzekomo ułatwiają tworzenie baz danych. Przez wiele lat korzystałem z programu SQL Server Management Studio (SSMS), aby bez problemu opracowywać bazę danych.
- Dlaczego powinienem zawracać sobie głowę VS2010, gdy SSMS działa dla mnie? Co konkretnie robi to lepiej niż SSMS?
- Ale być może moje założenie jest niepoprawne, a SSMS wciąż przebija VS pod kątem rozwoju bazy danych. Jeśli tak, to w jaki konkretny sposób jest to prawdą?
tools
ssms
visual-studio
visual-studio-2010
Nick Chammas
źródło
źródło
Odpowiedzi:
Szczerze mówiąc, byłem trochę rozczarowany VS2010. Myślę, że oldskulowy skrypt tworzenia tabel i plików dla procedur przechowywanych jest łatwiejszy w obsłudze. Jeśli potrzebujesz zarządzania schematem, możesz uzyskać Redgate SQL Compare Pro za kilkaset dolarów.
Jeśli naprawdę potrzebujesz narzędzia do modelowania baz danych, to Powerdesigner lub nawet Erwin wykonuje znacznie lepszą pracę, chociaż nie są one szczególnie tanie.
Chociaż wolę SSMS, użyłem obu. Niektóre zalety i wady:
SSMS ma interfejs użytkownika, który „po prostu działa” dobrze w programowaniu SQL. Samo budowanie skryptów tworzenia i korzystanie z nich jest znacznie wygodniejsze niż obręcze VS2010, które zmuszają do skakania. Znacznie bardziej elastyczny (+ SSMS).
VS2010 ma podstawowe zarządzanie schematem (tj. Generowanie skryptów różnic / łatek) (+ VS2010). Jednak nie jest tak dobrze i ma pewne wady. Na przykład dopasowuje ograniczenia dotyczące nazwy. Jeśli masz zaznaczone lub domyślne ograniczenia w kolumnie bez nazywania ich, SQL Server generuje losową nazwę za scenami. Spowoduje to zamieszanie VS2010, jeśli skrypt zostanie zainstalowany na innym komputerze, ponieważ ograniczenia mogą mieć różne nazwy. Redgate jest tańszy i lepszy. (+ VS2010, ale wadliwe).
VS2010 jest naprawdę niezgrabny - musisz mieć jeden plik dla każdej tabeli lub innego obiektu DB. Zasadniczo musisz robić rzeczy w sposób VS2010, co jest dość kłopotliwe. (- VS2010)
VS2010 jest również nieco delikatny, a integracja kontroli źródła jest niestabilna. Nawet w prostej bazie danych każda tabela, ograniczenie, procedura przechowywana, indeks i inny obiekt bazy danych jest własnym plikiem. Pliki są dodawane do projektu przez cały czas, znacznie szybciej niż typowy projekt programistyczny z (powiedzmy) C #. Dzięki optymistycznej współbieżności ma tendencję do dyskretnego usuwania plików z projektu, gdy zameldowania nie są zsynchronizowane. Nawet przy dobrej dyscyplinie zespołowej informacje zwrotne z interfejsu użytkownika dotyczące statusu są bardzo słabe. Byłoby to katastrofą w złożonym modelu. (-VS2010 - Prawie uważam, że jest to błąd zatrzymujący show w dużym projekcie).
SSMS pochodzi z SQL Server - nie można pobić ceny (+ SSMS).
VS2010 nadal nie ma odpowiedniego repozytorium, takiego jak (powiedzmy) PowerDesigner lub Oracle Designer. Nie można łatwo wykonać zapytania do modelu danych bez instalacji go w bazie danych. (- VS2010).
Ogólnie rzecz biorąc, oceniłbym VS2010 na B-. Niezdarny był przy stosunkowo prostym projekcie bazy danych z dwiema tabelami faktów i około 15 wymiarami.
Największy model danych, jaki kiedykolwiek stworzyłem, dotyczył systemu zarządzania sprawami sądowymi, który miał około 560 tabel. Nie poleciłbym VS2010 dla projektu o takiej wielkości (zrobiłem to w Oracle Designer). Zasadniczo stara się być sprytny, a paradygmat nie działa tak dobrze. Lepiej jest z najlepszym narzędziem do modelowania, takim jak PowerDesigner lub po prostu ręcznie tworzyć skrypty tabel.
SSMS jest prosty i niezawodny, ale ręczny. Masz prawie nieskończoną kontrolę nad tym, jak chcesz zarządzać modelem. W połączeniu z menedżerem schematów, takim jak Redgate SQL Compare i być może dobrym narzędziem do modelowania, takim jak PowerDesigner, masz znacznie lepszy pakiet niż VS2010.
Podsumowanie Nie jestem pewien, czy mógłbym zacytować jakieś zabójcze funkcje lub korzyści oprócz (być może) integracji z rozwiązaniami VS zawierającymi inne projekty. Jeśli masz już wersję Premium lub Ultimate VS2010, otrzymujesz nieco wadliwe narzędzie do tworzenia baz danych wraz z łańcuchem narzędzi .Net. Zintegruje projekty DB z rozwiązaniem VS, dzięki czemu można go używać do tworzenia przynajmniej skryptów wdrażania sproc.
VS nie ma jednak żadnego narzędzia do modelowania, więc PowerDesigner lub nawet Erwin jest lepszy pod tym względem. Zarządzanie schematem Redgate jest znacznie lepsze, a SQL Compare Pro jest dość tani (około 400 £ IIRC). IMHO SSMS działa znacznie lepiej w programowaniu T-SQL, ale na pewno możesz to zrobić za pomocą VS2010.
VS2010 premium nie jest dużo tańszy niż najlepsze w swojej klasie narzędzie do modelowania baz danych, a VS2010 ultimate jest co najmniej tak samo drogi. Kosztem ścisłej integracji z projektem VS prawdopodobnie lepiej radziłbyś sobie z narzędziami innych firm.
Alternatywa
Wydaje mi się, że nie należy zbytnio zrzucać VS2010 bez sugerowania co najmniej jednej alternatywy i przedstawienia jej zalet i wad. Na potrzeby tego zakładam duży projekt. Chociaż obecnie wykonuję głównie prace związane z zakupem, jestem zaangażowany w projekt na ponad 100 lat pracowniczych, w którym wykonałem model danych (i niektóre prace rozwojowe) i kilka innych w przedziale 10 lat pracowniczych, gdzie głównie pracowałem jako analityk lub programista. Obecnie pracuję głównie na systemach hurtowni danych, ale większe projekty były głównie aplikacjami. W oparciu o moje doświadczenia z różnymi narzędziami, oto kilka sugestii dotyczących alternatywnego łańcucha narzędzi:
Zalety: Lepsze modelowanie bazy danych i zarządzanie schematem niż VS2010, lepszy system kontroli wersji, łatwiejsze dostosowywanie pracy kompilacji i projektu, lepsze zarządzanie specyfikacjami i dokumentacją.
Minusy: większy wysiłek na rzecz integracji narzędzi, ograniczona integracja DB w procesie kompilacji.
Założenia: Zakłada, że kontrola procesu zmiany / wydania jest ważniejsza niż zautomatyzowane lub ściśle zintegrowane zarządzanie wydaniami schematów DB. Zakłada również, że zautomatyzowane zarządzanie schematem DB nie jest w 100% niezawodne.
Niezbyt zaawansowana technologicznie lub zręcznie zintegrowana, ale w przypadku złożonego projektu prawdopodobnie bardziej interesuje Cię kontrola niż urocze zautomatyzowane funkcje. Twierdzę, że lepiej jest ci z zestawem najlepszych narzędzi rasowych i jakakolwiek kompilacja domowego napoju i skrypty testowe są konieczne, aby je zintegrować. Po prostu staraj się, aby kompilacja (a) była stosunkowo łatwa do zrozumienia i (b) w pełni zautomatyzowana.
Kontrola jakości łatek DB. W przypadku dużego schematu możesz chcieć mieć ręczny proces łatania dla aktywnych systemów, szczególnie jeśli łatki dotyczą migracji danych. Na przykład może być pożądane posiadanie skryptów przechodzenia do przodu i do tyłu, aby w razie potrzeby wycofywać zmiany. W takim przypadku będziesz chciał mieć możliwość sprawdzenia, czy łatka faktycznie działa poprawnie. Jeśli zarządzasz schematem bazy danych w repozytorium, możesz przetestować skrypty, konfigurując je przed bazami danych i generując referencyjną bazę danych z repozytorium. Uruchomienie skryptu poprawki na wcześniejszej bazie danych powinno zsynchronizować go z modelem repozytorium. Aby to sprawdzić, można użyć narzędzia do porównywania schematów.
Wykonałem ostatnio dużo więcej prac związanych z hurtownią danych i integracją niż tworzenie aplikacji na zamówienie, więc spotykam się z tym częściej niż zespół programistów w większości przypadków. Jednak narzędzia i metody zarządzania projektami mają bardzo kiepską rolę w zarządzaniu zewnętrznymi interesariuszami. W projekcie integracyjnym, takim jak hurtownia danych, naprawdę chcę zobaczyć narzędzie do zarządzania projektami, które naprawdę przesuwa zależności zewnętrzne (tj. Te, których nie kontroluję) w obliczu zarządzania programem. W każdym nietrywialnym projekcie integracyjnym zewnętrzne zależności są zdecydowanie największymi motorami zmarnowanego czasu.
źródło
Od samego początku zastanawiałem się, jak ustrukturyzować odpowiedź na to pytanie. Jest to trudne, ponieważ w przypadku VS2010 nie chodzi o opis funkcji i zalet tego narzędzia. Chodzi o przekonanie czytelnika, aby dokonał zasadniczej zmiany w podejściu do tworzenia baz danych. Niełatwe.
Odpowiedzi na to pytanie udzielają doświadczeni specjaliści z baz danych, z mieszanką w tle obejmującą DBA, programistę / dba oraz OLTP i hurtownię danych. Nie jest dla mnie opłacalne podejście do każdego aspektu rozwoju bazy danych za jednym posiedzeniem, więc postaram się uzasadnić konkretny scenariusz.
Jeśli twój projekt spełnia te kryteria, uważam, że istnieje przekonujący argument za VS2010:
Jeśli oceniasz VS2010 pod kątem rozwoju bazy danych, twoją biblią będzie Visual Studio Database Guide z Visual Studio ALM Rangers . Wszelkie cytaty, które nie zawierają odnośników, będą pochodzić z tego dokumentu.
Idziemy więc ...
Dlaczego proces tworzenia bazy danych różni się od tworzenia aplikacji?
Dane. Gdyby nie te nieznośne dane, tworzenie baz danych byłoby uciążliwe. Możemy po prostu ZROBIĆ wszystko na każdym wydaniu i zapomnieć o tym kłopotliwym zarządzaniu zmianami.
Co jest nie tak z SSMS?
Z jakiegoś powodu nazywa się to SQL Server Management Studio. Jako samodzielne narzędzie niepraktyczne jest zarządzanie działaniami programistycznymi, jeśli zamierzasz przestrzegać przyjętych najlepszych praktyk.
W przypadku samych skryptów, aby w sposób znaczący zastosować ustalone praktyki kontroli źródła w twoim rozwoju, będziesz musiał zachować obie definicje obiektów (np. Skrypt CREATE TABLE) ORAZ zmieniać skrypty (np. ALTER TABLE) ORAZ ciężko pracować, aby upewnić się, że pozostają zsynchronizowane.
Łańcuch wersji zmian w tabeli dość szybko staje się głupi. Bardzo uproszczony przykład:
W wersji 3 skrypt zmiany bazy danych zawiera:
Jeśli wersja na żywo tej bazy danych to wersja 1, a nasza następna wersja to wersja 3, poniższy skrypt byłby wszystkim, czego potrzeba, ale zamiast tego zostaną wykonane obie instrukcje ALTER.
5-letnie 4-tygodniowe sprinty składają się na zabawne skrypty wersji i wymagają dodatkowej obsługi, aby zminimalizować wpływ na czas wdrażania.
Czy coś jest nie tak z SSMS? Nie, nadaje się do tego, do czego służy, administrowania programem SQL Server i zarządzania nim. Nie udaje nawet, że pomaga deweloperowi bazy danych w (czasami) bardzo złożonym zadaniu zarządzania zmianą.
Jeśli nie możesz zbudować każdej wersji bazy danych ze źródła i uaktualnić do dowolnej przyszłej wersji, kontrola źródła jest zepsuta. Jeśli tak nie uważasz, zapytaj Erica Sink .
Co z SSMS + <- wstaw narzędzie do porównywania schematów ->?
Jest to zdecydowanie krok we właściwym kierunku i pochłania wiele ręcznego wysiłku wymaganego do obsługi skryptów. Ale (i to duży, ale), zwykle są to ręczne kroki.
Popularne narzędzia do porównywania schematów można w pełni zautomatyzować i zintegrować z procesem kompilacji. Jednak z mojego doświadczenia wynika, że bardziej powszechną praktyką jest ręczne uruchamianie porównania, a wynikowe skrypty są wypatrywane, sprawdzane w kontroli źródła, a następnie uruchamiane ręcznie w celu wdrożenia. Niedobrze.
Ilekroć my omylni ludzie musimy angażować się w proces budowania lub wdrażania, wprowadzamy ryzyko i sprawiamy, że proces ten nie jest powtarzalny.
Jeśli ty i twój zespół jesteście jednymi z nielicznych, którzy mają w pełni zautomatyzowane porównywanie i wdrażanie schematów, czapki z głów! Jesteście najbardziej otwarci na korzyści, jakie VS2010 ma do zaoferowania:
Jeśli nie można utworzyć kompilacji w jednym kroku lub wdrożyć w jednym kroku, proces programowania i wdrażania jest zepsuty. Jeśli tak nie uważasz, zapytaj Joela Spolsky'ego .
Dlaczego VS2010?
Pytanie postawione przez @NickChammas dotyczy funkcji zabójczych, które pokazują, dlaczego VS2010 jest zmieniaczem gier do tworzenia baz danych. Nie sądzę, żebym mógł to zrobić na tej podstawie.
Być może komicznie, gdy inni widzą wady tego narzędzia, widzę silne powody do przyjęcia:
Jeśli jesteś jedynym DBA w projekcie, zarządzającym wszystkimi zmianami w bazie danych, to rozumowanie musi brzmieć absurdalnie. Jeśli jednak uważasz, że @BrentOzar ma rację i jedną z nowych zasad jest to, że Wszyscy są DBA , będziesz musiał kontrolować zmianę bazy danych w sposób, z którym każdy programista w zespole może współpracować.
Doszliśmy do fundamentalnej zmiany, która jest niezbędna do pomyślnego przyjęcia podejścia VS2010 do tworzenia baz danych…
Traktuj swoją bazę danych jako kod
Nigdy więcej zmiany bazy danych na żywo. Każda zmiana bazy danych będzie przebiegać według tego samego wzoru co zmiana aplikacji. Modyfikuj źródło, kompiluj, wdrażaj. To nie jest tymczasowa zmiana kierunku od Microsoft, to przyszłość dla SQL Server . Baza danych jako kod jest już dostępna.
Tak, istnieją inne narzędzia, które działają w podobny sposób, a dla projektów poza ograniczeniami, które nałożyłem na moją odpowiedź, są one warte równego rozważenia. Ale jeśli pracujesz z programem Visual Studio i Team Foundation Server ALM, nie sądzę, aby mogli konkurować.
Co jest nie tak z projektami baz danych VS2010?
Edycja: Więc o co ci chodzi?
@AndrewBickerton wspomniał w komentarzu, że nie odpowiedziałem na pierwotne pytanie, dlatego postaram się podsumować „Dlaczego powinienem używać Visual Studio 2010 przez SSMS do tworzenia baz danych?” tutaj.
źródło
VS może wyglądać świetnie, jeśli nie znasz SSMS lub używałeś narzędzi innych firm. Luki w VS wyróżniają się, jeśli używasz narzędzi Red Gate do porównywania schematów itp. Oraz darmowych wtyczek SSMS.
Bity kontroli źródła wprowadzają w błąd: w produkcyjnej bazie danych znajduje się kopia referencyjna. Nie tego używa programista. Widzieć
źródło
Używam Visual Studio szeroko (dobrze, BIDS) do projektowania raportów SSRS i pakietów SSIS. Nie mogłem sobie poradzić zbyt dobrze, jeśli w ogóle, w Management Studio. Visual Studio jest znacznie bardziej kompletnym i zintegrowanym środowiskiem programistycznym i znacznie lepiej łączy się z systemami kontroli źródeł. I to wszystko znajduje odzwierciedlenie w cenie!
źródło
Szczerze mówiąc, mój głos trafia prosto do SQL Server Management Studio w zakresie projektowania, rozwoju i (oczywiście) administracji baz danych. Po prostu łatwiej jest wpisać:
Następnie kliknij we wszystkich odpowiednich miejscach. SSMS to świetny układ i absolutnie świetny do pracy. A ja z natury jestem programistą .NET. Ale jeśli chodzi o projektowanie i kodowanie baz danych, wybiorę SSMS 11 razy na 10.
źródło
Nie ma najlepszej praktyki, ale dzięki projektowi bazy danych VS 2010 i kontrolerowi kodu źródłowego (VSS 2010, Subversion itp.) Możesz zaktualizować swoją bazę danych.
Zalecam, aby najpierw zaprojektować bazę danych bezpośrednio w SSMS. Gdy baza danych jest prawie gotowa, zaimportuj ją do projektu bazy danych VS 2010. Po zakończeniu importowania należy zawsze dodać nowy skrypt do projektu bazy danych, aby śledzić wszystkie modyfikacje. Możesz użyć funkcji porównywania projektu bazy danych, aby uzyskać wszystkie zmiany z serwera programistycznego i zaimportować wszystkie te skrypty bezpośrednio do projektu. Teraz wystarczy „zatwierdzić” zmianę w kontrolerze kodu źródłowego.
Dzięki tej metodzie możesz mieć wersjonowaną bazę danych. Możesz zlokalizować wersję każdej modyfikacji i wycofać zmiany.
To nie jedyna zaleta. Za pomocą tego rodzaju projektu można porównać dowolne bazy danych z projektem do skryptu zmian, a za pomocą wiersza polecenia SQL PowerShell można zaktualizować wszystkie bazy danych za pomocą tego samego skryptu: ten skrypt jest schematem XML bazy danych. Wykona tylko niezbędne polecenia, aby zaktualizować twoje bazy danych. Masz również możliwość wykonania testu jednostkowego w swojej bazie danych. Inny dobry artykuł dotyczący projektu bazy danych jest dostępny tutaj . Dzięki funkcji wdrażania możesz mieć skrypt przed i po skrypcie. Za pomocą tych skryptów można sprawdzać poprawność lub wstawiać dane do tabel systemowych.
Oto dobra procedura krok po kroku dla projektu bazy danych.
źródło
Używam SSMS częściej niż VS2010, ponieważ jest on dostępny podczas instalacji programu SQL Server. Jest to prawdopodobnie najważniejsza rzecz, dlaczego SSMS jest używany częściej niż VS2010, IMHO.
Odkryłem również, że dostawcy tacy jak Red-Gate wydają narzędzia, które integrują się z SSMS, a niekoniecznie VS2010. Może to być pozytywne, ponieważ pozwala ulepszyć SSMS tam, gdzie Microsoft tego nie zrobił. Jednym z przykładów jest SQL Source Control firmy Red-Gate, który jest dodatkiem do SSMS, który umożliwia połączenie SSMS z systemem kontroli źródła w Twojej firmie, niezależnie od tego, czy jest to Visual Team Foundation, czy to, co masz. VS2010 ma to wbudowane, ale w porównaniu z ceną narzędzia Reg-Gate właśnie zaoszczędziłem sporo pieniędzy bez konieczności kupowania VS2010.
Myślę, że ogólnie rzecz biorąc, sprowadza się to do preferencji, pracujesz z tym, w czym czujesz się komfortowo. Jeśli trenujesz nową osobę i trenujesz ją na VS2010, to stanie się ich preferencją, ponieważ wiedzą, jak sobie z tym poradzić.
Jeśli zacząłeś grać z SQL Server 2012, być może zauważyłeś, że SSMS robi makijaż VS2010 powoli, ale na pewno. Więc w końcu możesz nie być w stanie odróżnić między nimi.
źródło