Dlaczego powinienem używać Visual Studio 2010 zamiast SSMS do tworzenia baz danych?

42

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ą?
Nick Chammas
źródło
2
Na podstawie zgromadzonych dotychczas odpowiedzi podejrzewam, że respondenci nie używają żadnego z narzędzi bazy danych VS2010 w zamierzony sposób.
Mark Storey-Smith
2
@ MarkStorey-Smith - Tak, a ja zaatakuję wszystkich w przyszłym tygodniu moją odpowiedzią. Od czego się nauczyłem i stosowane dotychczas, VS 2010 jest narzędziem rozwoju bazy danych.
Nick Chammas,
W rzeczywistości masz już projekty baz danych w poprzednich wersjach programu Visual Studio, ale były one dostępne tylko w wersjach Premium, IIRC.
gonsalu
1
Poprzednie wersje były bardzo różne.
Mark Storey-Smith,
Używam tylko SSMS. SSMS jest w pełni zdolny do robienia tego, co należy zrobić. Nasze serwery nie muszą wiedzieć, co tam jest ...
Asken,

Odpowiedzi:

27

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:

  • VS2010 profesjonalny lub wyższy. Możesz lub nie chcesz korzystać z funkcji zarządzania projektami premium lub ultimate.
  • Subversion, AnkhSVN i TortoiseSVN - lepszy niż TFS każdego dnia i dobrze gra z VS. Jest również całkiem podatny na wycofywanie się z lokalnych repozytoriów dla jednoczesnych prac rozwojowych.
  • SSMS dla rozwoju T-SQL - Zarządzanie projektami i integracja SC nie jest tak dobra, ale działa dobrze w przypadku prac nad DB.
  • Projekt DB VS2010 do śledzenia plików sproc - nieco niezdarny, jeśli używasz SSMS, ale działa OK. Wygeneruje również skrypty wdrażania.
  • PowerDesigner - Znacznie lepiej w modelowaniu bazy danych i zarządzaniu elementami schematu DB. Robi również UML, jeśli chcesz mocno wejść w MDA. Jeśli chcesz kierować projektem DB z modelu obiektowego, możesz zamiast tego rozważyć Sparx EA. Wykonuje najlepszą pracę Meta CASE (rozszerzalnego modelu meta) dowolnego narzędzia CASE, jakie widziałem, chociaż modelowanie bazy danych pozostawia wiele do życzenia.
  • SQL Compare pro - służy do generowania skryptów łat DB lub testowania ręcznych skryptów łatek (patrz 1 poniżej).
  • Framemaker - Znacznie bardziej stabilne i lepsze funkcje pracy grupowej niż Word, jeśli masz wielu analityków pracujących nad specyfikacją. Obsługuje również włączenie warunkowe, dzięki czemu można mieć wersje wersji specyfikacji z ukrytymi zmianami WIP. MIF i MML ułatwiają integrację dokumentów API i słowników danych w dokumentach specyfikacji. Przydaje się to, ponieważ można je odsyłać w specyfikacji. Zakotwiczenia etykiet tekstowych zapewniają stabilność odniesień podczas ponownego importu. Możesz także użyć TCS do pojedynczego źródła dokumentu w formacie PDF, HTML i CHM.
  • Śledzenie problemów z oprogramowaniem typu open source - Wiele dobrych programów typu open source (np. TRAC, Bugzilla, żeby wymienić tylko kilka, których użyłem). Te o otwartym kodzie źródłowym są łatwiejsze do modyfikacji lub integracji z niestandardowym przepływem pracy i nie można pobić ceny.
  • NUnit lub inne narzędzia testujące - wszelkie automatyczne narzędzia testujące są najbardziej odpowiednie dla twoich wymagań.
  • Wszystko oprócz projektu stwardnienia rozsianego - uważane za szkodliwe. Projekt MS jest skierowany do wewnątrz i zmusza plany projektu do modelu, który nie reprezentuje niepewności, ryzyka lub zależności od interesariuszy lub innych stron trzecich (patrz 2 poniżej).

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.

  1. 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.

  2. 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.

ConcernedOfTunbridgeWells
źródło
Dziękujemy za zaktualizowanie odpowiedzi z tymi wszystkimi szczegółami. Teraz jest o wiele bardziej wartościowy.
Nick Chammas,
2
Nie zgadzaj się co do jednego pliku na obiekt, co jest uciążliwe. To nie jest sposób VS2010, to kontrola źródła 101. Nie definiujesz wielu klas C # w jednym pliku, prawda?
Mark Storey-Smith
2
Szczerze mówiąc, nie podążam. Po pierwsze, narzędzia zarządzają tymi plikami za Ciebie, nie zwiększa to mojej wydajności. Po drugie, tabele, klucze, indeksy i ograniczenia są oddzielone, ponieważ a) są oddzielnymi obiektami, logicznie i fizycznie b) często manipulujesz nimi w izolacji, np. Upuszczając i odtwarzając indeksy w ramach refaktora, który wymaga przenoszenia danych.
Mark Storey-Smith
1
Ogólne stwierdzenia, takie jak „narzędzia zarządzają plikami dla ciebie”, nie są zbyt pomocne, ponieważ moja obserwacja jest taka, że ​​po prostu nie - przynajmniej nie w niezawodny sposób. VS2010 może działać OK dla jednego użytkownika; nie działało to zbyt dobrze dla zespołu. Z mojego doświadczenia wynika, że ​​złoty partner MS miał z tym problem z zarządzaniem prostą bazą danych rachunkowych. To nie byli ludzie.
ConcernedOfTunbridgeWells
2
@ConcernedOfTunbridgeWells proszę nie postrzegaj moich komentarzy jako antagonistycznych lub sprzecznych w jakikolwiek sposób, to nie jest moja intencja. Bardzo mnie interesuje, dlaczego VS2010 nie jest wdrażany szerzej, ponieważ często opowiadam się za tym, aby zespoły go zbadały. Jeśli możesz poświęcić czas na bardziej szczegółowe omówienie , chętnie wysłucham twoich myśli.
Mark Storey-Smith
19

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:

  • Twój zespół używa VS2010 do tworzenia aplikacji.
  • Twój zespół używa TFS do kontroli źródła i zarządzania kompilacją.
  • Twoja baza danych to SQL Server.
  • Twój zespół ma już lub jest zainteresowany automatycznymi testami VS.

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.

Istnienie danych komplikuje proces zmiany bazy danych, ponieważ dane są często migrowane, przekształcane lub ponownie ładowane, gdy zmiany są wprowadzane przez działania programistyczne, które wpływają na kształt tabel bazy danych lub innych schematów danych. W trakcie tego procesu zmian dane dotyczące jakości produkcji i stan operacyjny muszą być chronione przed zmianami, które mogą zagrozić jego integralności, wartości i przydatności dla organizacji.

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:

-- Version 1
CREATE TABLE dbo.Widget (WidgetId INT, Name VARCHAR(20))

-- Version 2
CREATE TABLE dbo.Widget (WidgetId INT, Name VARCHAR(20), Description VARCHAR(50))

-- Version 3
CREATE TABLE dbo.Widget (WidgetId INT, Name VARCHAR(20), Description VARCHAR(100))

W wersji 3 skrypt zmiany bazy danych zawiera:

ALTER TABLE dbo.Widget ADD Description VARCHAR(50)
ALTER TABLE dbo.Widget ALTER COLUMN Description VARCHAR(100)

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.

ALTER TABLE dbo.Widget ADD Description VARCHAR(100)

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:

  • Już zaakceptowałeś, że ręczne kroki są niebezpieczne.
  • Widzisz wartość automatyzacji.
  • Jesteś gotów zainwestować czas niezbędny do jego działania.

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:

  • Będziesz musiał zmienić swoje podejście.
  • Ty i twój zespół będziecie zmuszeni do pracy w inny sposób.
  • Będziesz musiał szczegółowo ocenić wpływ każdej zmiany.
  • Zostaniesz poprowadzony do uczynienia każdej zmiany idempotentną .

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ć.

Przyjęcie projektów baz danych może wymagać zmiany mentalnej ( stare nawyki są trudne do złamania ) dla niektórych programistów lub przynajmniej zmiany w procesie lub przepływach pracy. Programiści, którzy opracowali aplikacje bazodanowe, w których produkcyjna baza danych reprezentuje bieżącą wersję bazy danych, będą musieli przyjąć podejście oparte na kodzie źródłowym, w którym kod źródłowy staje się narzędziem, w którym wprowadzane są zmiany w bazach danych . W projektach bazy danych Visual Studio projekt i kod źródłowy to „Jedna wersja prawdy” dla schematu bazy danych i jest zarządzany za pomocą przepływów pracy SCM, które prawdopodobnie są już używane przez programistę lub organizację do innych części stosu aplikacji. W przypadku danych produkcyjna baza danych pozostaje „jedną wersją prawdy” taką, jaka powinna być.

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.

Twórca bazy danych określa kształt obiektu dla wersji aplikacji, a nie sposób mutowania istniejącego obiektu w silniku bazy danych do pożądanego kształtu. Być może zastanawiasz się: w jaki sposób można to wdrożyć w bazie danych, która już zawiera tabelę klientów? Tutaj właśnie pojawia się silnik wdrażania. Jak wspomniano wcześniej, aparat wdrażania weźmie skompilowaną wersję schematu i porówna ją z celem wdrożenia bazy danych. Mechanizm różnicowania wygeneruje niezbędne skrypty do zaktualizowania docelowego schematu, aby pasował do wersji wdrażanej z projektu.

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?

  • Nie są idealne . Ale jeśli znasz ograniczenia i obszary problemowe, możesz je obejść.
  • Złożone ruchy danych nadal wymagają opieki i uwagi, ale są pokrywane za pomocą skryptów wdrażania przed / po.

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.

  • SSMS nie jest narzędziem do tworzenia baz danych. Tak, możesz rozwijać TSQL za pomocą SSMS, ale nie zapewnia on bogatych funkcji IDE VS2010.
  • VS2010 zapewnia platformę do traktowania bazy danych jako kodu.
  • VS2010 wprowadza analizę kodu statycznego do kodu bazy danych.
  • VS2010 zapewnia narzędzia do pełnej automatyzacji cyklu kompilacji-wdrożenia-testu.
  • SQL2012 i Visual Studio vNext rozszerzają możliwości projektów baz danych. Zapoznaj się teraz z VS2010, a uzyskasz przewagę nad narzędziami do tworzenia baz danych nowej generacji.
Mark Storey-Smith
źródło
Przydatna odpowiedź z pewnymi zastrzeżeniami: 1) Pominąłeś kryterium „Tworzysz samodzielne aplikacje, które są wysyłane do stron klienckich (tj. Istnieje wiele kopii tej samej bazy danych na wolności i tworzone są nowe [puste] / cały czas sprzedawane) „2) Odpowiedzieliście, dlaczego powinniśmy traktować bazę danych jako kod i zarządzać cyklami programowania, tworzenia, wdrażania (z którymi już się zgadzam). W twojej odpowiedzi nie widzę ważnego powodu, dla którego powinniśmy użyć VS2010 jako mechanizmu do osiągnięcia tego celu. +2 (przemyślana odpowiedź) i -1 (nie odpowiada na rzeczywiste pytanie)
Andrew Bickerton
2
Jakiego „bogatego IDE” potrzebujesz do skryptu SQL?
gbn
1
Zalety zautomatyzowanych cykli testowania kompilacji i wdrażania są widoczne na dalszym etapie. Zautomatyzowana część wdrożenia na żywo ograniczyłabym się do bycia „odręcznym”, tj. Nie wymagającym żadnych ręcznych kroków.
Mark Storey-Smith
1
Poza tym twoje argumenty za integracją mają jakąś wartość. Jak dobrze to działa w przypadku ogólnym? Miałem z tym problemy, ale śmiem twierdzić, że można go uruchomić.
ConcernedOfTunbridgeWells
2
@Nick Zrobię to dla ciebie :-)
Jack Douglas
7

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ć

gbn
źródło
1
Muszę się z tym zgodzić - możesz projektować / opracowywać DB i zarządzać schematem za pomocą VS2010, ale istnieją łańcuchy narzędzi innych firm, które robią to w ten sposób, znacznie lepiej.
ConcernedOfTunbridgeWells
1
Dlaczego wziąłbyś produkcję jako kopię referencyjną? Myślę, że to zła praktyka i prawdopodobnie również znak, że Twoja kontrola źródła jest zepsuta. Dlaczego kod bazy danych nie powinien należeć do cyklu rozwojowego, jak wszystko inne?
Nick Chammas
@NickChammas: Mam na myśli przywróconą kopię produkcji. W moim obecnym sklepie kontrola źródła nie pasuje do bazy danych na żywo. W moim ostatnim, podobnie dla innych zespołów. To, co jest wdrażane za pomocą skryptu zmiany, nie jest tym, nad czym programiści pracują ...
gbn
6

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!

Peter Schofield
źródło
6

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ć:

create table newTable
(
    someId int identity(1, 1) not null primary key clustered,
    ...... you get the idea
)

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.

Thomas Stringer
źródło
W Visual Studio wpisujesz DDL tabeli dokładnie w ten sam sposób. Czy myślisz o czymś innym?
Nick Chammas,
1
@Nick Prawdopodobnie źle to sformułowałem. Wiem, że możesz to zrobić w VS, ale myślę, że miło jest mieć dedykowane narzędzie do tego konkretnego (i dużego) zadania. Jestem zdecydowanie bestią nawykową, a SSMS stał się moim nawykiem. :)
Thomas Stringer
2
Naprawdę? Możliwości rozwiązania / projektu SSMS wydają się być dodane przez stażysty 2 tygodnie przed uruchomieniem.
Mark Storey-Smith
1
@ MarkStorey-Smith jest zatem pytaniem o to, w jaki sposób SSMS tak naprawdę nie ma wsparcia dla projektu / rozwiązania, a to jest ważne, aby pozwolić zespołom dobrze pracować w środowisku IDE na całym świecie?
jcolebrand
3
Jednym z założeń byłoby, że SSMS jest narzędziem do administrowania bazą danych, VS2010 jest narzędziem do tworzenia baz danych.
Mark Storey-Smith
5

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.

Nico
źródło
4
Nie tak powinno się robić tworzenie baz danych w VS2010, wydaje się, że nieco przegapiłeś ten punkt. 1) Dlaczego jedna ziemia miałaby zaprojektować bazę danych greenfield w SSMS, a następnie zaimportować do VS? 2) Nie musisz „zawsze dodawać nowego skryptu do projektu bazy danych”, aby śledzić zmiany. 3) Skrypty nie są „schematem xml” bazy danych.
Mark Storey-Smith
Czy kiedykolwiek próbowałeś projektu bazy danych? 1 - Ponieważ możesz zaimportować bazę danych tylko raz, więc jeśli nie chcesz skryptować wszystkich, zrób maksimum w SSMS dla pierwszego szkicu bazy danych. 2- Masz rację, możesz śledzić zmiany za pomocą narzędzia porównującego VS2010, a VS2010 wygeneruje je dla Ciebie. 3- Wypróbuj projekt bazy danych, kiedy wdrożysz projekt bazy danych, otrzymasz schemat XML bazy danych, aby zaktualizować produkcyjne bazy danych.
Nico,
2
Tak, od wczesnych i bardziej bolesnych wersji . Rzeczywiście zaimportujesz raz, ale zsynchronizujesz wiele (nie żebyś musiał to zrobić, chyba że będziesz kontynuować pracę poza środowiskiem). Bardziej dokładny opis tego, co określasz mianem skryptu „XML Schema”, polega na tym, że narzędzia obsługują meta-model bazy danych oparty na języku xml, którego narzędzie wdrażania wiersza poleceń używa do tworzenia poleceń niezbędnych do aktualizacji docelowej bazy danych .
Mark Storey-Smith
2

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.

Shawn Melton
źródło