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?
tools
ssms
visual-studio
visual-studio-2010
Nick Chammas
quelle
quelle
Antworten:
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:
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.
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.
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.
quelle
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:
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.
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:
Ab Version 3 enthält das Datenbankänderungsskript Folgendes:
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.
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:
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:
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.
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.
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?
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.
quelle
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
quelle
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!
quelle
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:
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.
quelle
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.
quelle
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.
quelle