Warum sollte ich Visual Studio 2010 über SSMS für meine Datenbankentwicklung verwenden?

42

Visual Studio 2010 führt Datenbankprojekte und eine ganze Reihe verwandter Funktionen ein, die angeblich die Datenbankentwicklung erleichtern sollen. Ich habe jahrelang SQL Server Management Studio (SSMS) verwendet, um meine Datenbankentwicklung ohne Probleme durchzuführen.

  • Warum sollte ich mich mit VS2010 beschäftigen, wenn SSMS für mich funktioniert? Was kann es konkret besser als SSMS?
  • Aber vielleicht ist meine Prämisse falsch und SSMS übertrifft immer noch VS für die Datenbankentwicklung. Wenn ja, wie ist das konkret?
Nick Chammas
quelle
2
Nach den bisher gesammelten Antworten vermute ich, dass die Befragten keines der VS2010-Datenbanktools in der beabsichtigten Weise verwenden.
Mark Storey-Smith
2
@ MarkStorey-Smith - Ja, und ich werde nächste Woche alle mit meiner Antwort rocken. Nach dem, was ich bisher gelernt und verwendet habe, ist VS 2010 das Tool für die Datenbankentwicklung.
Nick Chammas
Sie hatten bereits Datenbankprojekte in früheren Visual Studio-Versionen, diese waren jedoch nur in den Premium-Editionen IIRC verfügbar.
gonsalu
1
Frühere Versionen waren sehr unterschiedlich.
Mark Storey-Smith
Ich benutze nur SSMS. SSMS ist in der Lage zu tun, was getan werden muss. Unsere Server müssen nicht wissen, was da ist ...
Asken

Antworten:

27

Eigentlich war ich mit VS2010 ein bisschen überfordert, um ehrlich zu sein. Ich denke, ein Old-School-Skript zum Erstellen von Tabellen und Dateien für gespeicherte Prozeduren sind einfacher zu handhaben. Wenn Sie eine Schemaverwaltung benötigen, können Sie Redgate SQL Compare Pro für ein paar hundert Dollar erwerben.

Wenn Sie wirklich ein Datenbankmodellierungstool benötigen, sind Powerdesigner oder sogar Erwin viel besser in der Lage, obwohl sie nicht besonders günstig sind.

Obwohl ich SSMS bevorzuge, habe ich beide verwendet. Einige Vor- und Nachteile:

  • SSMS verfügt über eine Benutzeroberfläche, die für die SQL-Entwicklung einfach gut funktioniert. Das einfache Erstellen und Verwenden von Erstellungsskripten ist viel praktischer, als Sie mit dem Rahmen VS2010 zum Durchspringen gezwungen werden. Viel, viel flexibler (+ SSMS).

  • VS2010 verfügt über ein grundlegendes Schema-Management (dh Differenz- / Patch-Skript-Generierung) (+ VS2010). Es ist jedoch nicht so gut und hat einige Mängel. Zum Beispiel entspricht es Einschränkungen für den Namen. Wenn eine Spalte über Überprüfungs- oder Standardeinschränkungen verfügt, ohne diese zu benennen, generiert SQL Server im Hintergrund einen zufälligen Namen. Dies wird VS2010 verwirren, wenn Sie das Skript auf einem anderen Computer installieren, da die Einschränkungen möglicherweise unterschiedliche Namen haben. Redgate ist billiger und besser. (+ VS2010, aber fehlerhaft).

  • VS2010 ist wirklich umständlich - Sie müssen eine Datei für jede Tabelle oder jedes andere DB-Objekt haben. Im Grunde muss man die Dinge auf die VS2010-Art erledigen, was ziemlich umständlich ist. (- VS2010)

  • VS2010 ist auch etwas zerbrechlich und die Integration der Quellcodeverwaltung ist unzuverlässig. Selbst in einer einfachen Datenbank ist jede Tabelle, jede Einschränkung, jede gespeicherte Prozedur, jeder Index und jedes andere Datenbankobjekt eine eigene Datei. Dateien werden dem Projekt ständig hinzugefügt, viel schneller als ein typisches Programmierprojekt mit (sagen wir) C #. Bei optimistischer Parallelität besteht die Tendenz, Dateien stillschweigend aus dem Projekt zu entfernen, wenn das Einchecken nicht mehr synchron ist. Trotz guter Teamdisziplin ist das Feedback der Benutzeroberfläche zum Status sehr schlecht. Dies wäre eine Katastrophe in einem komplexen Modell. (-VS2010 - Ich würde beinahe meinen, dass dies ein aufsehenerregender Fehler für ein großes Projekt ist).

  • SSMS wird mit SQL Server geliefert - der Preis ist unschlagbar (+ SSMS).

  • VS2010 verfügt immer noch nicht über ein geeignetes Repository wie PowerDesigner oder Oracle Designer. Sie können das Datenmodell nicht einfach abfragen, ohne es in einer Datenbank zu installieren. (- VS2010).

Insgesamt würde ich VS2010 über eine B- bewerten. Bei einem relativ einfachen Datenbankprojekt mit zwei Faktentabellen und etwa 15 Dimensionen war dies unbeholfen.

Das größte Datenmodell, das ich je gemacht habe, war ein Gerichtsverfahren mit rund 560 Tabellen. Ich würde VS2010 für ein Projekt dieser Größe nicht empfehlen (das habe ich in Oracle Designer gemacht). Im Grunde versucht es, klug zu sein, und das Paradigma funktioniert nicht so gut. Mit einem erstklassigen Modellierungswerkzeug wie PowerDesigner oder einfach mit der manuellen Erstellung von Tabellenskripten sind Sie besser dran.

SSMS ist einfach und zuverlässig, aber manuell. Sie haben so ziemlich unbegrenzte Kontrolle darüber, wie Sie das Modell verwalten möchten. Kombinieren Sie es mit einem Schema-Manager wie Redgate SQL Compare und einem anständigen Modellierungswerkzeug wie PowerDesigner, und Sie haben ein viel besseres Paket als VS2010.

Zusammenfassung Ich bin mir nicht sicher, ob ich neben der (möglicherweise) Integration in VS-Lösungen, die andere Projekte enthalten, noch weitere herausragende Funktionen oder Vorteile nennen könnte. Wenn Sie bereits über VS2010 Premium oder Ultimate verfügen, erhalten Sie ein fehlerhaftes Datenbankentwicklungstool, das in Ihrer .Net-Toolkette enthalten ist. DB-Projekte werden in Ihre VS-Lösung integriert, sodass Sie damit mindestens Sproc-Bereitstellungsskripts erstellen können.

VS verfügt jedoch über kein nennenswertes Modellierungswerkzeug, weshalb PowerDesigner oder sogar Erwin in dieser Hinsicht besser geeignet sind. Redgates Schema-Management ist viel besser und SQL Compare Pro ist recht günstig (ca. 400 GBP IIRC). IMHO SSMS funktioniert viel besser für die T-SQL-Entwicklung, aber Sie können es auf jeden Fall mit VS2010 tun.

VS2010 premium ist nicht viel billiger als ein erstklassiges Datenbankmodellierungstool, und VS2010 ultimate ist mindestens genauso teuer. Auf Kosten einer engen Integration in Ihr VS-Projekt könnten Sie mit Tools von Drittanbietern wahrscheinlich bessere Ergebnisse erzielen.

Eine Alternative

Ich denke, man sollte VS2010 nicht zu sehr verschrotten, ohne mindestens eine Alternative vorzuschlagen und deren Vor- und Nachteile zu skizzieren. Zu diesem Zweck gehe ich von einem großen Projekt aus. Obwohl ich heutzutage hauptsächlich in der Personalabteilung arbeite, war ich an einem Projekt mit mehr als 100 Mitarbeitern beteiligt, bei dem ich das Datenmodell (und einige Entwicklungsarbeiten) sowie einige andere im 10-Mitarbeiter-Jahres-Bereich durchgeführt habe, bei denen ich hauptsächlich gearbeitet habe als Analyst oder Entwickler. Heutzutage arbeite ich hauptsächlich an Data Warehouse-Systemen, aber die größeren Projekte waren hauptsächlich Anwendungen. Aufgrund meiner Erfahrungen mit verschiedenen Werkzeugen sind hier einige Vorschläge für eine alternative Werkzeugkette:

  • VS2010 Professional oder höher. Möglicherweise möchten Sie Projektverwaltungsfunktionen von Premium oder Ultimate verwenden oder nicht.
  • Subversion, AnkhSVN und TortoiseSVN - Besser als TFS jeden Tag und spielt gut mit VS. Es ist auch recht einfach, lokale Repositorys für parallele Entwicklungsarbeitsabläufe zu belegen.
  • SSMS für die T-SQL-Entwicklung - Projektmanagement und SC-Integration sind nicht so gut, eignen sich aber gut für die DB-Entwicklung.
  • VS2010 DB-Projekt zum Verfolgen von Sproc-Dateien - etwas umständlich, wenn Sie SSMS verwenden, aber in Ordnung sind. Es werden auch Bereitstellungsskripte generiert.
  • PowerDesigner - Besseres Modellieren einer Datenbank und Verwalten von DB-Schemaelementen. Es funktioniert auch mit UML, wenn Sie sich intensiv mit MDA befassen möchten. Wenn Sie Ihr DB-Design von einem Objektmodell aus steuern möchten, sollten Sie stattdessen Sparx EA in Betracht ziehen. Es macht die beste Arbeit von Meta CASE (erweiterbares Metamodell) von jedem CASE-Tool, das ich gesehen habe, obwohl seine Datenbankmodellierung etwas zu wünschen übrig lässt.
  • SQL Compare Pro - Verwenden Sie diese Option, um DB-Patch-Skripte zu erstellen oder manuelle Patch-Skripte zu testen (siehe 1 unten).
  • Framemaker - Viel stabilere und bessere Groupware-Funktionen als Word, wenn mehrere Analysten an einer Spezifikation arbeiten. Es unterstützt auch die bedingte Einbeziehung, sodass Sie versionierte Versionen einer Spezifikation mit ausgeblendeten WIP-Änderungen haben können. MIF und MML machen es ziemlich einfach, API-Dokumente und Datenwörterbücher in die Spezifikationsdokumente zu integrieren. Dies ist sehr nützlich, da Sie sie dann in der Spezifikation referenzieren können. Textuelle Label-Anker sorgen für stabile Querverweise bei Reimporten. Sie können das Dokument auch mit TCS aus einer Quelle in PDF-, HTML- und CHM-Ausgabe umwandeln.
  • Open-Source-Issue-Tracker - Viele gute Open-Source-Issue-Tracker (z. B. TRAC, Bugzilla, um ein paar zu nennen, die ich verwendet habe). Open-Source-Produkte lassen sich einfacher modifizieren oder in einen benutzerdefinierten Workflow integrieren, und Sie können den Preis nicht übertreffen.
  • NUnit oder andere Testtools - welche automatisierten Testtools für Ihre Anforderungen am besten geeignet sind.
  • Alles andere als ein MS-Projekt - Wird als schädlich eingestuft. Das MS-Projekt ist sehr nach innen gerichtet und zwingt die Projektpläne in ein Modell, das Unsicherheiten, Risiken oder Abhängigkeiten von Interessengruppen oder anderen Dritten nicht effektiv darstellt (siehe 2 unten).

Vorteile: Bessere Datenbankmodellierung und Schemaverwaltung als VS2010, besseres Versionskontrollsystem, einfachere Anpassung des Build- und Projektworkflows, bessere Verwaltung von Spezifikationen und Dokumentation.

Nachteile: Mehr Aufwand für die Integration von Tools, eingeschränkte DB-Integration in den Build-Prozess.

Annahmen: Nimmt an, dass die Kontrolle des Änderungs- / Freigabeprozesses wichtiger ist als das automatisierte oder eng integrierte Freigabemanagement für DB-Schemata. Nimmt auch an, dass die automatisierte Verwaltung von DB-Schemata nicht zu 100% zuverlässig ist.

Nicht wirklich Hightech oder raffiniert integriert, aber für ein komplexes Projekt sind Sie wahrscheinlich mehr an der Steuerung interessiert als an niedlichen automatisierten Funktionen. Ich würde behaupten, dass Sie besser dran sind, wenn Sie eine Reihe von erstklassigen Tools und die für die Integration erforderlichen Eigenentwicklungs- und Testskripts verwenden. Versuchen Sie einfach, den Build (a) relativ einfach zu verstehen und (b) vollständig zu automatisieren.

  1. QA auf DB-Patches. In einem großen Schema möchten Sie möglicherweise einen manuellen Patch-Vorgang für Live-Systeme ausführen, insbesondere wenn die Patches eine Datenmigration beinhalten. Beispielsweise kann es wünschenswert sein, Roll-Forward- und Roll-Back-Skripte zu haben, um das Zurücksetzen einer Änderung bei Bedarf zu unterstützen. In diesem Fall benötigen Sie eine Funktion, mit der Sie testen können, ob der Patch tatsächlich ordnungsgemäß funktioniert. Wenn Sie das Datenbankschema in einem Repository verwalten, können Sie die Skripts testen, indem Sie sie vor Datenbanken einrichten und eine Referenzdatenbank aus dem Repository generieren. Wenn Sie das Patch-Skript in der Before-Datenbank ausführen, sollte es mit dem Repository-Modell synchronisiert werden. Ein Schema-Vergleichstool kann verwendet werden, um dies zu testen.

  2. Ich habe in letzter Zeit viel mehr Data-Warehouse- und Integrationsarbeiten durchgeführt als bei der Entwicklung von maßgeschneiderten Anwendungen. Daher stoße ich auf diese Probleme in den meisten Fällen häufiger als bei einem Entwicklerteam. Projektmanagement-Tools und -Methoden leisten jedoch nur sehr wenig, um externe Stakeholder zu managen. In einem Integrationsprojekt wie einem Data Warehouse möchte ich unbedingt ein Projektmanagement-Tool sehen, das externe Abhängigkeiten (dh solche, die ich nicht kontrolliere) gegenüber dem Programmmanagement wirklich in die Höhe treibt. Bei jedem nicht trivialen Integrationsprojekt sind die externen Abhängigkeiten die mit Abstand größten Treiber für verschwendete Zeit.

Betroffen vonTunbridgeWells
quelle
Vielen Dank, dass Sie Ihre Antwort mit all diesen Details aktualisiert haben. Es ist jetzt viel wertvoller.
Nick Chammas
2
Ich bin mir nicht einig, dass eine Datei pro Objekt umständlich ist. Dies ist nicht die VS2010-Methode, sondern die Quellcodeverwaltung 101. Sie definieren nicht mehrere C # -Klassen in einer einzigen Datei, oder?
Mark Storey-Smith
2
Ehrlich gesagt folge ich nicht. Erstens verwalten die Tools diese Dateien für Sie, ohne dabei meine Produktivität zu beeinträchtigen. Zweitens werden Tabellen, Schlüssel, Indizes und Einschränkungen getrennt, weil a) sie separate Objekte sind, logisch und physisch. B) Sie sie häufig isoliert bearbeiten, z.
Mark Storey-Smith
1
Umfassende Aussagen wie "Die Tools verwalten die Dateien für Sie" sind nicht sehr hilfreich, da sie meiner Beobachtung nach eindeutig nicht zutreffen - zumindest nicht zuverlässig. VS2010 funktioniert möglicherweise für einen einzelnen Benutzer einwandfrei. Für ein Team hat es nicht sehr gut funktioniert. Ich habe die Erfahrung gemacht, dass ein MS Gold Partner Probleme damit hatte, einen einfachen Accounting Data Mart zu verwalten. Es waren nicht die Leute.
ConcernedOfTunbridgeWells
2
@ConcernedOfTunbridgeWells Bitte sehen Sie meine Kommentare nicht als antagonistisch oder argumentativ an, das ist nicht meine Absicht. Ich bin sehr gespannt zu hören, warum VS2010 nicht weiter verbreitet wird, da ich es oft vorstelle, dass Teams es untersuchen. Wenn Sie sich die Zeit nehmen können, ausführlicher zu diskutieren , wären Sie an Ihren Gedanken interessiert.
Mark Storey-Smith
19

Ich habe versucht, eine Antwort auf diese Frage zu strukturieren, seit sie ursprünglich veröffentlicht wurde. Dies ist schwierig, da es in VS2010 nicht darum geht, die Funktionen und Vorteile des Tools zu beschreiben. Hier geht es darum, den Leser zu überzeugen, seine Herangehensweise an die Datenbankentwicklung grundlegend zu ändern. Nicht einfach.

Es gibt Antworten auf diese Frage von erfahrenen Datenbankexperten mit einem Hintergrundmix aus DBA, Entwickler / DBA, OLTP und Data Warehousing. Es ist für mich nicht sinnvoll, dies in einer Sitzung für alle Aspekte der Datenbankentwicklung zu erörtern. Daher werde ich versuchen, ein bestimmtes Szenario zu begründen.

Wenn Ihr Projekt diese Kriterien erfüllt, gibt es meines Erachtens einen überzeugenden Fall für VS2010:

  • Ihr Team verwendet VS2010 für die Anwendungsentwicklung.
  • Ihr Team verwendet TFS für die Quellcodeverwaltung und das Build-Management.
  • Ihre Datenbank ist SQL Server.
  • Ihr Team hat bereits automatisierte VS-Tests oder ist daran interessiert.

Wenn Sie VS2010 für die Datenbankentwicklung auswerten, ist Ihre Bibel das Visual Studio-Datenbankhandbuch der Visual Studio ALM Rangers . Alle folgenden Zitate, auf die nicht verwiesen wird, stammen aus diesem Dokument.

Auf geht's dann ...

Warum unterscheidet sich der Datenbankentwicklungsprozess von der Anwendungsentwicklung?

Daten. Ohne diese lästigen Daten wäre die Datenbankentwicklung ein Kinderspiel. Wir könnten einfach alles bei jeder Veröffentlichung TROPFEN und dieses lästige Änderungsmanagement vergessen.

Das Vorhandensein von Daten erschwert den Datenbankänderungsprozess, da die Daten häufig migriert, transformiert oder neu geladen werden, wenn Änderungen durch Anwendungsentwicklungsbemühungen vorgenommen werden, die sich auf die Form der Datenbanktabellen oder anderer Datenschemata auswirken. Während dieses Änderungsprozesses müssen Daten zur Produktionsqualität und der Betriebszustand vor Änderungen geschützt werden, die die Integrität, den Wert und den Nutzen für das Unternehmen gefährden können.

Was ist los mit SSMS?

Es hat einen Grund, warum es SQL Server Management Studio heißt. Als eigenständiges Tool ist es unpraktisch, Ihre Entwicklungsbemühungen zu verwalten, wenn Sie anerkannte Best Practices befolgen.

Nur mit Skripten müssen Sie sowohl Objektdefinitionen (z. B. ein CREATE TABLE-Skript) als auch Änderungsskripten (z. B. ALTER TABLE) pflegen und hart daran arbeiten, sicherzustellen, dass sie synchron bleiben, um bewährte Methoden der Quellcodeverwaltung in Ihrer Entwicklung sinnvoll anzuwenden.

Die Versionskette für Änderungen an einer Tabelle wird ziemlich schnell ziemlich blöd. Ein sehr vereinfachtes Beispiel:

-- 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))

Ab Version 3 enthält das Datenbankänderungsskript Folgendes:

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

Wenn es sich bei der Live-Version dieser Datenbank um Version 1 und bei unserer nächsten Version um Version 3 handelt, ist nur das folgende Skript erforderlich. Stattdessen werden beide ALTER-Anweisungen ausgeführt.

ALTER TABLE dbo.Widget ADD Description VARCHAR(100)

5 Jahre von 4 Wochen Sprints summieren sich zu einigen unterhaltsamen Versionsskripten und erfordern zusätzlichen Personaleinsatz, um die Auswirkungen auf die Bereitstellungszeit zu minimieren.

Stimmt etwas mit SSMS nicht? Nein, es ist gut für das, wofür es gut ist, SQL Server zu verwalten und zu verwalten. Es gibt nicht einmal vor, einem Datenbankentwickler bei der (manchmal) sehr komplexen Aufgabe des Änderungsmanagements behilflich zu sein.


Wenn Sie nicht jede Version der Datenbank aus dem Quellcode erstellen und auf eine zukünftige Version aktualisieren können, ist Ihre Quellcodeverwaltung fehlerhaft. Wenn Sie das nicht glauben, fragen Sie Eric Sink .


Was ist mit SSMS + <- Schemavergleichstool einfügen ->?

Dies ist definitiv ein Schritt in die richtige Richtung und erspart einen Großteil des manuellen Aufwands für die Pflege von Skripten. Aber (und es ist ein großes, aber), in der Regel sind manuelle Schritte erforderlich.

Die beliebten Schemavergleichstools können vollständig automatisiert und in den Erstellungsprozess integriert werden. Meiner Erfahrung nach ist es jedoch üblich, einen Vergleich manuell durchzuführen, die resultierenden Skripte zu überprüfen, in die Quellcodeverwaltung einzuchecken und dann manuell auszuführen, um sie bereitzustellen. Nicht gut.

Immer wenn wir fehlbaren Menschen in den Bau- oder Bereitstellungsprozess involviert werden müssen, führen wir Risiken ein und machen den Prozess nicht wiederholbar.

Wenn Sie und Ihr Team zu den wenigen gehören, die über einen vollautomatischen Schema-Vergleich und eine vollautomatische Bereitstellung verfügen, können Sie sich freuen! Ihr seid am ehesten offen für die Vorteile, die VS2010 zu bieten hat:

  • Sie haben bereits akzeptiert, dass manuelle Schritte gefährlich sind.
  • Sie sehen den Wert der Automatisierung.
  • Sie sind bereit, die dafür erforderliche Zeit zu investieren.

Wenn Sie keinen Build in einem einzigen Schritt erstellen oder in einem einzigen Schritt bereitstellen können, ist Ihr Entwicklungs- und Bereitstellungsprozess unterbrochen. Wenn Sie das nicht glauben, fragen Sie Joel Spolsky .


Warum VS2010?

Die Frage, die @NickChammas gestellt hat, ist nach Killer-Features zu suchen, die zeigen, warum VS2010 ein Game Changer für die Datenbankentwicklung ist. Ich glaube nicht, dass ich das auf dieser Grundlage begründen kann.

Vielleicht komisch, wenn andere Fehler in diesem Tool sehen, sehe ich starke Gründe für die Annahme:

  • Sie müssen Ihren Ansatz ändern.
  • Sie und Ihr Team werden gezwungen sein, anders zu arbeiten.
  • Sie müssen die Auswirkungen jeder Änderung ausführlich bewerten.
  • Sie werden dazu geführt, dass jede Änderung idempotent wird .

Wenn Sie der einzige DBA in einem Projekt sind, der alle Änderungen an der Datenbank verwaltet, muss diese Argumentation absurd klingen. Wenn Sie jedoch der Meinung sind, dass @BrentOzar einen Punkt hat und eine der neuen Regeln lautet, dass Jeder der DBA ist , müssen Sie die Datenbankänderungen auf eine Weise steuern, mit der jeder Entwickler im Team arbeiten kann.

Die Übernahme von Datenbankprojekten kann für einige Entwickler eine mentale Veränderung ( alte Gewohnheiten sind schwer zu brechen ) oder zumindest eine Änderung des Prozesses oder der Arbeitsabläufe erforderlich machen. Entwickler, die Datenbankanwendungen entwickelt haben, bei denen die Produktionsdatenbank die aktuelle Version der Datenbank darstellt, müssen einen quellcodebasierten Ansatz anwenden, bei dem der Quellcode zum Vehikel wird, an dem Änderungen an Datenbanken vorgenommen werden . In Visual Studio-Datenbankprojekten sind das Projekt und der Quellcode die "One Version of the Truth" für das Datenbankschema und werden mithilfe von SCM-Workflows verwaltet, die wahrscheinlich bereits vom Entwickler oder der Organisation für andere Teile ihres Anwendungsstapels verwendet werden. Für die Daten bleibt die Produktionsdatenbank die "Eine Version der Wahrheit", wie sie sein sollte.

Wir sind an der grundlegenden Veränderung angelangt, die erforderlich ist, um den VS2010-Ansatz für die Datenbankentwicklung erfolgreich umzusetzen…

Behandle deine Datenbank als Code

Kein Ändern der Live-Datenbank mehr. Jede Datenbankänderung folgt demselben Muster wie eine Anwendungsänderung. Quelle ändern, erstellen, bereitstellen. Dies ist keine vorübergehende Richtungsänderung von Microsoft, dies ist die Zukunft für SQL Server . Datenbank als Code ist da, um zu bleiben.

Der Datenbankentwickler definiert die Form des Objekts für die Version der Anwendung und nicht, wie das vorhandene Objekt im Datenbankmodul in die gewünschte Form geändert werden soll. Sie fragen sich möglicherweise: Wie wird dies für eine Datenbank implementiert, die bereits die Kundentabelle enthält? Hier kommt die Deployment Engine ins Spiel. Wie bereits erwähnt, verwendet die Bereitstellungsengine die kompilierte Version Ihres Schemas und vergleicht sie mit einem Datenbankbereitstellungsziel. Das differenzierende Modul erstellt die erforderlichen Skripts, um das Zielschema so zu aktualisieren, dass es der Version entspricht, die Sie aus dem Projekt bereitstellen.

Ja, es gibt andere Tools, die einem ähnlichen Muster folgen, und für Projekte außerhalb der von mir auferlegten Einschränkungen sind sie gleichermaßen zu berücksichtigen. Wenn Sie jedoch mit Visual Studio und Team Foundation Server ALM arbeiten, können sie meiner Meinung nach nicht miteinander konkurrieren.

Was ist los mit VS2010-Datenbankprojekten?

  • Sie sind nicht perfekt . Wenn Sie sich jedoch der Einschränkungen und Problembereiche bewusst sind, können Sie diese umgehen.
  • Komplexe Datenbewegungen erfordern weiterhin Sorgfalt und Aufmerksamkeit, werden jedoch mit Skripten vor und nach der Bereitstellung berücksichtigt.

Edit: Also, was ist dein Punkt dann?

@ AndrewBickerton erwähnte in einem Kommentar, dass ich die ursprüngliche Frage nicht beantwortet habe, und ich werde versuchen, zusammenzufassen: "Warum sollte ich Visual Studio 2010 über SSMS für meine Datenbankentwicklung verwenden?" Hier.

  • SSMS ist kein Datenbankentwicklungstool. Ja, Sie können TSQL mit SSMS entwickeln, es bietet jedoch nicht die umfangreichen IDE-Funktionen von VS2010.
  • VS2010 bietet ein Framework, um Ihre Datenbank als Code zu behandeln.
  • VS2010 bringt statische Code-Analyse in Ihren Datenbankcode.
  • VS2010 bietet Ihnen die Tools, um den Build-Deploy-Test-Zyklus vollständig zu automatisieren.
  • SQL2012 und Visual Studio vNext erweitern die Funktionen von Datenbankprojekten. Machen Sie sich jetzt mit VS2010 vertraut, und Sie haben einen Vorsprung auf die Entwicklungstools der nächsten Generation für Datenbanken.
Mark Storey-Smith
quelle
Eine nützliche Antwort mit einigen Einschränkungen: 1) Sie haben ein Kriterium übersehen. "Sie entwickeln Standalone-Anwendungen, die an Client-Sites gesendet werden (dh, es werden mehrere Kopien derselben Datenbank in freier Wildbahn und neue [leere] erstellt / andauernd verkauft) "2) Sie haben geantwortet, warum wir eine Datenbank als Code behandeln und die Entwicklung, Erstellung und Bereitstellung von Zyklen verwalten sollten (mit denen ich bereits einverstanden bin). Ich sehe keinen zwingenden Grund in Ihrer Antwort, warum wir VS2010 als Mechanismus verwenden sollten, um dies zu erreichen. +2 (nachdenkliche Antwort) & -1 (Beantwortung der eigentlichen Frage nicht)
Andrew Bickerton
2
Welche "Rich-IDE" benötigen Sie für ein SQL-Skript?
29.
1
Die Vorteile automatisierter Build-Deploy-Test-Zyklen werden nachgelagert gesehen. Den automatisierten Teil eines Live-Einsatzes würde ich darauf beschränken, "hands-off" zu sein, dh keine manuellen Schritte zu erfordern.
Mark Storey-Smith
1
Abgesehen davon haben Ihre Argumente für die Integration einige Vorteile. Wie gut funktioniert es im allgemeinen Fall? Ich hatte Probleme damit, aber ich wage zu sagen, dass es funktioniert.
ConcernedOfTunbridgeWells
2
@ Nick Ich werde es für Sie tun :-)
Jack Douglas
7

VS kann großartig erscheinen, wenn Sie SSMS nicht kennen oder Tools von Drittanbietern verwendet haben. Die Lücken in VS fallen auf, wenn Sie Red Gate-Tools für den Schemavergleich usw. verwenden. Und auch die kostenlosen SSMS-Plug-Ins.

Die Quellcodeverwaltungsbits sind irreführend: In der Produktionsdatenbank befindet sich Ihre Referenzkopie. Nicht das, was der Entwickler verwendet. Sehen

gbn
quelle
1
Ich muss dem zustimmen - Sie können DB-Design / -Entwicklung und Schema-Management mit VS2010 durchführen, aber es gibt Toolketten von Drittanbietern, die dies besser machen.
ConcernedOfTunbridgeWells
1
Warum sollten Sie die Produktion als Referenzkopie verwenden? Ich denke, das ist eine schlechte Praxis und wahrscheinlich auch ein Zeichen dafür, dass Ihre Quellcodeverwaltung kaputt ist. Warum sollte Ihr Datenbankcode nicht wie alles andere zum Entwicklungslebenszyklus gehören?
Nick Chammas
@ NickChammas: Ich meine eine restaurierte Kopie der Produktion. In meinem aktuellen Shop stimmt das, was sich in der Quellcodeverwaltung befindet, nicht mit der Live-DB überein. In meinem letzten, ähnlich für andere Teams. Was über ein Änderungsskript bereitgestellt wird, ist nicht das, woran die Entwickler arbeiten ...
29.11.11
6

Ich verwende Visual Studio ausgiebig (naja, BIDS) für die Erstellung von SSRS-Berichten und für SSIS-Pakete. Ich konnte es in Management Studio auch nicht sehr gut, wenn überhaupt. Visual Studio ist eine viel umfassendere und integrierte Entwicklungsumgebung, die sich auch viel besser in Versionsverwaltungssysteme einfügt. Und das spiegelt sich alles im Preis wider!

Peter Schofield
quelle
6

Um ehrlich zu sein, meine Stimme geht direkt an SQL Server Management Studio für das Design, die Entwicklung und (offensichtlich) die Verwaltung von Datenbanken. Es ist nur einfacher zu tippen:

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

Dann klicken Sie an die richtigen Stellen. SSMS ist ein großartiges Layout und eine tolle Arbeit. Und ich bin von Natur aus ein .NET-Softwareentwickler. Aber wenn es um Datenbankdesign und -codierung geht, wähle ich SSMS 11-mal von 10.

Thomas Stringer
quelle
In Visual Studio geben Sie Ihre Tabellen-DDL genauso aus. Denkst du an etwas anderes?
Nick Chammas
1
@ Nick Ich habe das wahrscheinlich falsch formuliert. Ich weiß, dass Sie das in VS tun können, aber mein Ding ist, dass es schön ist, ein spezielles Werkzeug für diese spezifische (und große) Aufgabe zur Hand zu haben. Ich bin definitiv ein Gewohnheitstier, und ich habe SSMS zu meiner Gewohnheit gemacht. :)
Thomas Stringer
2
"Ja wirklich?" Die Funktionen der SSMS-Lösung / des SSMS-Projekts scheinen 2 Wochen vor dem Start von einem Praktikanten hinzugefügt worden zu sein.
Mark Storey-Smith
1
@ MarkStorey-Smith ist die Frage, warum SSMS nicht wirklich Projekt- / Lösungsunterstützung bietet, und das ist wichtig, damit Teams in einer IDE auf ganzer Linie gut funktionieren können?
Jcolebrand
3
Ein Einzeiler wäre, dass SSMS ein Datenbankverwaltungstool und VS2010 ein Datenbankentwicklungstool ist.
Mark Storey-Smith
5

Es gibt keine bewährten Methoden, aber mit dem VS 2010-Datenbankprojekt und dem Quellcode-Controller (VSS 2010, Subversion usw.) können Sie Ihre Datenbank versionieren.

Ich empfehle, dass Sie zuerst Ihre Datenbank direkt in SSMS entwerfen. Wenn Ihre Datenbank fast fertig ist, importieren Sie sie in ein VS 2010-Datenbankprojekt. Sobald der Import abgeschlossen ist, müssen Sie Ihrem Datenbankprojekt immer ein neues Skript hinzufügen, um alle Änderungen im Auge zu behalten. Sie können die Vergleichsfunktion von Datenbankprojekten verwenden, um alle Änderungen vom Entwicklungsserver abzurufen und alle diese Skripts direkt in Ihr Projekt zu importieren. Sie müssen Ihre Änderung nur noch in Ihren Quellcode-Controller "übernehmen".

Mit dieser Methode können Sie eine versionierte Datenbank haben. Sie können die Version jeder Änderung erkennen und Ihre Änderungen rückgängig machen.

Dies ist nicht der einzige Vorteil. Mit dieser Art von Projekt können Sie alle Datenbanken mit Ihrem Projekt vergleichen, um die Änderungen zu skripten. Mit der SQL PowerShell-Eingabeaufforderung können Sie alle Datenbanken mit demselben Skript aktualisieren: Dieses Skript ist ein XML-Schema Ihrer Datenbank. Es werden nur die erforderlichen Befehle zum Aktualisieren Ihrer Datenbanken ausgeführt. Sie haben auch die Möglichkeit, einen Komponententest in Ihrer Datenbank durchzuführen . Ein anderer guter Artikel für ein Datenbankprojekt ist hier verfügbar . Mit der Bereitstellungsfunktion können Sie Pre-Script und Post-Script verwenden. Mit diesen Skripten können Sie Daten validieren oder in Ihre Systemtabellen einfügen.

Hier finden Sie eine gute schrittweise Anleitung für ein Datenbankprojekt.

Nico
quelle
4
Dies ist nicht die Art und Weise, wie die Datenbankentwicklung in VS2010 durchgeführt werden sollte. Sie scheinen den Punkt etwas verfehlt zu haben. 1) Warum eine Erde würden Sie eine Greenfield-Datenbank in SSMS entwerfen und dann in VS importieren? 2) Sie müssen nicht immer ein neues Skript in Ihr Datenbankprojekt einfügen, um Änderungen nachzuverfolgen. 3) Skripte sind kein "XML-Schema" Ihrer Datenbank.
Mark Storey-Smith
Haben Sie jemals ein Datenbankprojekt ausprobiert? 1 - Da Sie Ihre Datenbank nur einmal importieren können, können Sie, wenn Sie nicht alle Skripte ausführen möchten, das Maximum in SSMS für den ersten Entwurf der Datenbank tun. 2- Sie haben Recht, Sie können Änderungen mit dem Vergleichstool von VS2010 verfolgen und VS2010 wird es für Sie generieren. 3- Versuchen Sie es mit dem Datenbankprojekt. Wenn Sie Ihr Datenbankprojekt bereitstellen, erhalten Sie ein XML-Schema Ihrer Datenbank, um Ihre Produktionsdatenbanken auf den neuesten Stand zu bringen.
Nico
2
Ja, seit den frühen und schmerzhafteren Versionen . Sie wäre in der Tat einmal importieren , aber Sie synchronisieren viele (nicht , dass Sie jemals haben so zu tun, es sei denn , Sie arbeiten außerhalb der Umwelt fortgesetzt). Eine genauere Beschreibung dessen, was Sie als "XML-Schema" -Skript bezeichnen, besteht darin, dass die Tools ein XML-basiertes Metamodell der Datenbank verwalten, das das Befehlszeilen-Bereitstellungstool zum Erstellen der zum Aktualisieren einer Zieldatenbank erforderlichen Befehle verwendet .
Mark Storey-Smith
2

Ich verwende SSMS häufiger als VS2010, da es bei der Installation von SQL Server vorhanden ist. Das ist wahrscheinlich das Wichtigste, warum SSMS mehr als VS2010 verwendet wird, IMHO.

Ich habe auch festgestellt, dass Anbieter wie Red-Gate Tools herausbringen, die in SSMS und nicht unbedingt in VS2010 integriert sind. Dies kann insofern positiv sein, als Sie SSMS verbessern können, wo Microsoft dies nicht getan hat. Ein Beispiel hierfür ist die SQL-Quellcodeverwaltung von Red-Gate, ein Add-On zu SSMS, mit dem Sie SSMS mit dem Quellcodeverwaltungssystem Ihres Unternehmens verbinden können, unabhängig davon, ob es sich um Visual Team Foundation handelt oder was Sie haben. In VS2010 ist dies bereits eingebaut, aber im Vergleich zum Preis von Reg-Gates Tool habe ich nur eine Menge Geld gespart, ohne VS2010 kaufen zu müssen.

Ich denke, insgesamt kommt es auf die Präferenz an, Sie arbeiten mit dem, was Sie möchten. Wenn Sie eine neue Person ausbilden und sie auf VS2010 trainieren, wird dies zu ihrer Präferenz, weil sie wissen, wie sie damit umgehen können.

Wenn Sie mit SQL Server 2012 angefangen haben, haben Sie möglicherweise bemerkt, dass SSMS langsam, aber sicher das Make-up von VS2010 erhält. Sie können also möglicherweise nicht den Unterschied zwischen ihnen erkennen.

Shawn Melton
quelle