Ich verwende derzeit Tortoise SVN zur Quellcodeverwaltung einer .NET-Webanwendung. Was wäre der beste Weg, um unsere gespeicherten SQL Server-Prozeduren in die Quellcodeverwaltung zu bringen? Ich verwende derzeit VS 2010 als Entwicklungsumgebung und verbinde mich mit SQL Server Data Tools (SSDT) mit einer SQL Server 2008 R2-Datenbank außerhalb des Unternehmens.
In der Vergangenheit habe ich die Procs in einer .sql-Datei gespeichert und diese Dateien unter Versionskontrolle gehalten. Ich bin sicher, dass es einen effizienteren Weg geben muss? Gibt es eine Erweiterung, die ich auf VS2010, SSDT oder sogar SQL Server auf dem Produktionscomputer installieren kann?
Antworten:
Es gibt Tools wie dieses von Redgate , aber ich habe immer herausgefunden, dass es am besten ist, sie als SQL-Dateien zu speichern, vielleicht sogar in einem Datenbankprojekt (SSDT?) In Ihrer Lösung.
Dazu schlage ich folgende Richtlinien vor:
if exists then drop
zu Beginn " " über ein geeignetes verfügtSie können diese SQL-Dateien zunächst erstellen, indem Sie Skripte direkt aus SSMS erstellen, und Sie können SSMS so einstellen, dass alle Ihre "
drop
" und "create
" sowie Ihre Berechtigungen per Skript ausgeführt werden .quelle
Durch das Speichern der SQL-Dateien in der Quellcodeverwaltung können nur die SQL-Dateien gesteuert werden. Es kontrolliert weder die Änderungen der tatsächlichen Datenbankobjekte, noch verhindert es gleichzeitige Änderungen des gleichen Datenbankobjekts durch mehrere Benutzer (und ich denke, Sie möchten dies auch im Griff haben). Was wir verwenden, ist ein Drittanbieter-Tool ( ApexSQL-Version), wird es sowohl in SSMS als auch in VS integriert. Sie können wählen, ob Sie mit einer Datenbankversion des Objekts oder mit einer Versionsverwaltungsversion arbeiten möchten. Wenn Sie eine Datenbankversion bearbeiten, wird diese automatisch nur für Sie ausgecheckt, sodass sie von niemand anderem bearbeitet werden kann (Änderungen von verschiedenen Benutzern werden nicht zusammengeführt). Nur wenn Sie es erneut einchecken, können andere es ändern. Und Sie können Ihre SC-Version von der Version eines Live-Objekts unterscheiden (ich verwende diese, wenn ich für den Tag abreise und plane, die Änderungen abzuschließen und sie beim nächsten Mal zu testen).
quelle
Verwenden Sie die RedGate-Quellcodeverwaltung, um sie an Ihre Quellcodeverwaltung anzuschließen.
http://www.red-gate.com/products/sql-development/sql-source-control/
Es bindet Ihr SSMS direkt in Ihr Quellcodeverwaltungs-Repository ein und ermöglicht sogar das Einchecken statischer Daten.
Klappt wunderbar
quelle
Probieren Sie Ankhsvn aus , sehr empfehlenswert und kostenlos.
Von der Homepage:
quelle
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.
quelle
Am Ende habe ich selbst ein Werkzeug geschrieben.
Es steht zum kostenlosen Download zur Verfügung - http://www.gitsql.net
Ich hoffe, es hilft anderen Menschen, die das gleiche Endziel erreichen wollen.
In diesem Artikel wird die Quellcodeverwaltung von SQL Server beschrieben. http://gitsql.net/documentation-04_SQL_Server_and_GIT
Ich habe versucht, es so einfach wie möglich zu machen. (3 Bildschirme)
Ich habe außerdem aus Versehen die Funktion hinzugefügt, einzelne Objekte zum Importieren oder Exportieren auswählen zu können. Das macht das Entwickeln sehr einfach.
Normalerweise änderte ich eine gespeicherte Prozedur und eine Tabelle und exportierte diese beiden Objekte in ein GIT-Verzeichnis.
Dann benutze ich Source Tree, um die Änderungen visuell zu sehen und sie dann in bitbucket zu übertragen, wenn ich glücklich bin.
quelle
Mein Unternehmen hat gerade dieses neue Tool ( kostenlos ) entwickelt, mit dem Sie Skripts für SQL-Datenbanken einfach extrahieren , vergleichen , WinMerge zum schnellen Vergleichen von Skripts mit einer Live-Datenbank starten und Unterschiede synchronisieren können, indem Sie die Skripts aktualisieren oder die Änderungen anwenden in die Datenbank (außer für Tabellen, die komplexer und risikoreicher wären).
Servantt ist WinMerge zum Vergleichen von SQL Server-Datenbanken mit versionskontrollierten Skripten.
Es unterstützt und fördert Best Practices in der Softwareentwicklung:
(*) Skripte werden in einem lokalen Ordner gespeichert, der eine Arbeitskopie von Git, Subversion, TFS, Source Safe oder einem anderen VCS sein kann.
Kostenloser Download: http://servantt.com
Die professionelle Version (die sich noch in der Entwicklung befindet) wird eine völlig andere sein - sie zielt auf die Automatisierung der Bereitstellung (Versionsverwaltung) ab, um Aufgaben wie das Aktualisieren von IIS, das Aktualisieren von Windows-Diensten usw. zu automatisieren.
quelle