Ich starte ein neues Projekt und verwende SVN (mit Tortoise) als mein Versionskontrollsystem. Ich habe mich gefragt, ob es möglich ist, mit demselben System auch eine SQL Server-Datenbank zu verwalten.
Ich möchte meine Tabellen / Funktionen / Views / Procs / Trigger / etc versionieren. aber nicht meine Daten, da es sowieso nur Testdaten sind. Ich bin mir nicht sicher, wie ich das einrichten soll. Ich habe einige Optionen kennengelernt, möchte aber wissen, ob ich eine vermisst habe und ob es vielleicht einen Leitfaden oder etwas anderes gibt, das mir dabei hilft, damit zurechtzukommen.
Ich habe von Red Gate gehört und gesehen, aber ich suche nach etwas kostenlosem (oder zumindest sehr kostengünstigem). Ich weiß, dass ich immer selbst etwas schreiben könnte, aber ich versuche nicht wirklich, Zeit damit zu verbringen.
Eine Sache, auf die ich gestoßen bin, war ein Open-Source-Paket namens ScriptDB4Svn . Hat das schon mal jemand benutzt? Ist es gut? Kann es die Dinge tun, für die ich es brauche und ist es ziemlich einfach einzurichten?
quelle
Has anyone used this before? Is it good? Can it do the things I need it to do and is it pretty simple to get setup?
Warum hast du Angst, es selbst zu versuchen? Nimm es einfach und spiele herum.Antworten:
Technisch gesehen benötigen Sie nicht einmal ein Tool. Sie können die Objekte direkt skripten und in die Quellcodeverwaltung einchecken. Es ist ein bisschen mehr Arbeit ohne das Werkzeug, aber es ist definitiv praktikabel.
Übrigens: Ich habe das RedGate-Tool verwendet und es ist ziemlich clever und das Geld wert.
quelle
Es hört sich so an, als hätten Sie hauptsächlich ein Microsoft-Setup. Sie könnten einen Blick in Datenbankprojekte werfen (früher bekannt als DataDude). Sie verwandeln T-SQL in Visual Studio in eine erstklassige Sprache. du kannst:
[dbo]
in den meisten Fällen), um die Leistung um 30% zu steigern.Sie vereinheitlichen Ihren Code und Ihren Datenbankcode auch unter Quellcodeverwaltung. Wenn Sie Menschen-up und Skript Ihrer Datenbankobjekte (anstelle von Davinci Werkzeuge in SSMS) Sie landen auch eine IDE - das ist schön.
quelle
Sie können Rails verwenden. Rails hat ein Konzept für Datenbankmigrationen, die Sie anwenden oder zurücksetzen können. Nach meiner Erfahrung ist dies der beste Weg, eine Datenbank zu versionieren. Sie checken diese Migrationsdateien in SVN ein.
In meinem aktuellen Projekt entwickeln wir die Anwendung nicht in Ruby, verwenden jedoch weiterhin Rails, um die Datenbank zu verwalten. Ich würde es nicht anders machen.
quelle
Dies wurde bereits in stackoverflow besprochen: /programming/2750278/sql-server-2008-create-database-script-schema-data-with-command-line
Außerdem enthält dieser externe Artikel einige zusätzliche Informationen: http://www.sqlteam.com/article/scripting-database-objects-using-smo-updated, zusammen mit Beispielcode in Form einer Windows-Anwendung.
Da das, was Sie tun möchten, etwas ist, was ich für MS Access selbst getan habe, werde ich Ihnen sagen, was ich getan habe, falls es Ihnen einige Ideen gibt: Ich habe ein Modul namens Ado2Xml geschrieben, das das Schema und die Daten jedes ADO konvertiert -zugängliche Datenbank zu XML und zurück. Es kennt sich jedoch nur mit Tabellen und Ansichten aus. Keine gespeicherten Prozeduren, keine Trigger, kein Nichts. Auf jeden Fall wird in Ihrem Fall dieses Modul durch das Tool ersetzt, das Sie vermutlich finden werden, welches mit MS-SQL das macht, was Sie wollen. Bei jedem Start meiner Anwendung wird der Zeitstempel der Datenbank mit dem Zeitstempel der gespeicherten XML-Datei verglichen. Wenn die XML-Datei aktueller ist, wird die Datenbank zerstört und Ado2Xml aufgerufen, um sie aus der XML-Datei neu zu erstellen. Wenn meine Anwendung beendet wird, geschieht dies in umgekehrter Reihenfolge: Sie ruft Ado2Xml auf, um die Datenbank in die XML-Datei zu exportieren. Tatsächlich, Die ADO-Objekte, die das Datenbankschema extrahieren, sind aus irgendeinem Grund sehr langsam, sodass der Exportvorgang einige Zeit in Anspruch nimmt. Um zu vermeiden, dass meine Anwendung jedes Mal beendet wird und Visual Studio vom Debugging-Layout zum Bearbeitungslayout wechselt, startet meine App unmittelbar vor dem Beenden eine externe App, um den Export durchzuführen, damit sie beendet werden kann sofort.
quelle
Ja, ich habe ein ähnliches (intern entwickeltes) Tool für ein vorheriges Projekt verwendet. Es würde alle Tabellen, Views, Sprocs, Trigger usw. in einzelne .sql-Dateien skripten. Dann hatten wir ein Skript, das jede Nacht lief, um zu "validieren", dass sich alles in unserer "Entwicklungs" -Datenbank in der Quellcodeverwaltung widerspiegelte.
Der normale Workflow besteht also darin, dass Sie Ihren Code ändern, die entsprechenden Tabellen und Sprocs in der Entwicklungsdatenbank nach Bedarf ändern und dann das von uns verwendete Tool ausführen, mit dem alle skriptbasierten .sql-Dateien aktualisiert werden. Sie würden dann alles auf einmal einchecken.
Das Problem bestand darin, dass der Code "funktioniert" (und Komponententests bestanden), wenn Sie vergessen haben, das Tool auszuführen, da die Datenbank "korrekt" war, die neuen Sprocs / Tabellen jedoch keine Quellcodeverwaltung darstellen.
Wir haben also jede Nacht ein Skript, das den Quellcode überprüft und dann das Tool zum Aktualisieren aller Skripte verwendet. Wenn ein Unterschied festgestellt wurde, hat jemand vergessen, seine Änderungen einzuchecken, und es wurde eine E-Mail-Benachrichtigung generiert. Es war im Grunde nur eine Möglichkeit, um sicherzustellen, dass wir nicht vergessen, die Quellcodeverwaltung auf dem neuesten Stand zu halten.
Es war ein bisschen nervig, weil es schwierig war, an Änderungen zu arbeiten, die mehrere Tage dauerten, aber es war besser, als nichts zu haben ...
quelle
Then, we had a script that ran every night to "validate" that everything in our "development" database was reflected in source control.
? Vielen Dank für Ihre Antwort.