Ich habe sowohl das RedGate- als auch das Visual Studio-Datenbankprojekt ausprobiert und bevorzuge das Speichern der Datenbankdefinition im Datenbankprojekt. Sobald die Datenbank Teil der Lösung wird, können Sie Ihren bevorzugten Versionsverwaltungsanbieter verwenden. Die meisten haben eine hervorragende Visual Studio-Integration.
Mit den SSDT-Tools verfügen Sie über die 'neueste Version' der Datenbankdefinition, sodass Sie auf einfache Weise Schema-Vergleiche durchführen und Schema-Upgrade-Skripte generieren können.
Das Schema ist jedoch in der Regel nur ein Teil der Equasion. Im wirklichen Leben stellt sich heraus, dass Datenbanken bereits viele Daten enthalten. Und meine Benutzer werden eher enttäuscht, wenn sie es verlieren.
Sobald ich also die Version 1.0 herausgebracht habe, muss ich die Upgrade-Skripte warten. Manchmal enthalten diese nur Schemaänderungen, aber oft muss ich Standardeinstellungen basierend auf dem Inhalt einer anderen Tabelle erstellen, eine bestimmte Einschränkung aufheben, bis ich die Daten geimpft habe usw. Normalerweise führt ein einfaches Upgrade des Schemas nicht zu einer vollständigen Kürzung. Ich bevorzuge es, dieses Upgrade-Skript auch in einem separaten Ordner im Datenbankprojekt zu haben. Diese sehen normalerweise so aus: 'Upgrade von v1.0 auf v1.1'.
Meine Datenbanken haben immer eine Referenztabelle mit der aktuellen Versionsnummer, sodass ich inkompatible Upgrades blockieren kann. Die erste Anweisung in meinen Upgrade-Skripten überprüft die aktuelle Version und stellt fest, ob sie sich von den erwarteten unterscheidet.
Ein weiterer Vorteil der Datenbankprojekte besteht darin, dass unterschiedliche Datensätze basierend auf demselben Schema bereitgestellt werden können. Ich habe verschiedene Datensätze für die Entwicklung, das QA-Team, den Benutzerakzeptanztest und für automatisierte Integrationstests. Da ein Datenbankprojekt nur 1 Post-Deployment-Skript haben kann, besteht der Trick hier darin, ein neues Datenbankprojekt zu erstellen, das auf das 'Master'-Projekt verweist, und das benutzerdefinierte Dataset zum Teil der Post-Deployment-Prozesse dieses Projekts zu machen.
Das waren meine 2 Cent. Was auch immer Sie tun, es muss zu Ihnen und Ihrem Team passen und Sie hoffentlich bei den meisten der üblichen Aufgaben unterstützen.