SSDT ist vergleichbar mit Liquibase / Flyway, da es das tut, was sie tun, aber einen anderen Ansatz verfolgt. Mit SSDT verfügen Sie über die Entwicklungsumgebung, sodass Sie beispielsweise zur Definition gehen, Referenzen und Intelligenz finden sowie ein Projekt in einen Dacpac kompilieren und diesen Dacpac dann in einer Datenbank bereitstellen können.
Die SSDT-Methode (und die Redgate-SQL-Vergleichsmethode) für eine Deloyment besteht darin, zu deklarieren, was Sie möchten, wenn Sie eine Tabelle ändern möchten, die wie folgt aussieht:
create table a(id int)
zu einem Tisch, der aussieht wie:
create table a(id int, another_column varchar(12))
Mit SSDT ändern Sie einfach Ihre Tabellendefinition in die zweite und lassen SSDT sich Gedanken über das Upgrade machen (kann es eine Tabelle ändern, eine Spalte hinzufügen oder die Spaltenreihenfolge ändern, sodass Sie die Tabelle neu erstellen müssen usw.).
Bei Liquibase (DbUp, ReadyRoll, manuelle Methoden usw.) müssen Sie in diesem Fall die Änderungstabelle selbst schreiben und sicherstellen, dass Sie die Skripte in der richtigen Reihenfolge ausführen. Betrachten Sie dieses Szenario:
- Release 1 - Spalte Hallo auf Tabelle erstellen
- Release 2 - benenne die Spalte Hallo in joe_blogs um
- Release 3 - benenne die Spalte joe_blogs in hallo um
- Release 4 - Spalte joe_blogs erstellen
Wenn eine der Veröffentlichungen übersehen wird, kann keine der nächsten fortgesetzt werden.
Vorteile von Upgrade-Skripten (Liquibase, DbUp usw.):
- Sie haben die vollständige Kontrolle über die Skripte
- DBAs / Entwickler sind daran gewöhnt
Vorteile von Vergleichen / Zusammenführen (SSDT, Redgate SQL Compare):
- Sie müssen keine Upgrade-Skripte schreiben
- Es ist einfach, zu einer bestimmten Version zu gelangen, indem Sie diese Version vergleichen und zusammenführen
Nachteile von Upgrade-Skripten:
- Muss in der richtigen Reihenfolge ausgeführt werden
- Verlassen Sie sich auf Menschen, die keine Fehler machen
- Kann langsam sein, besonders wenn Sie viele Änderungen haben
- Es sei denn, Ihr Team ist sehr diszipliniert. Datenbanken in verschiedenen Umgebungen (Entwickler, Test, Staging, Produkt usw.) sind häufig nicht mehr synchron und machen Tests ungültig
- Ein Downgrade einer Version bedeutet, dass Sie die Rückseite aller bereits geschriebenen Skripte schreiben
Nachteile der Verwendung von Vergleichen / Zusammenführen:
- Tools sind nicht 100% vertrauenswürdig, vielleicht zu Unrecht
- SSDT erfordert ein funktionierendes Projekt, viele, viele Datenbanken haben Code, der nicht kompiliert oder ausgeführt wird (denken Sie an abgelegte Tabellen, aber keine Prozeduren usw.). Ich habe dies in ungefähr 8/10 Datenbanken gesehen, die ich geerbt habe :)
- Viele Datenbankadministratoren / Entwickler zögern, die Entwicklung in SSMS / Notepad aufzugeben
Persönlich denke ich wirklich, dass SSDT eine professionelle Entwicklungsumgebung ist und dass ich mich darauf konzentrieren kann, nützlichen Code und Tests zu schreiben, anstatt Upgrade-Skripte zu schreiben, die an sich nur ein Mittel zum Zweck sind.
Du hast nach Meinungen gefragt, also los geht's :)
ed