Frage

Kann jemand einige echte Beispiele dafür liefern, wie Skriptdateien für Ansichten, gespeicherte Prozeduren und Funktionen am besten in einem SVN-Repository (oder einem anderen) aufbewahrt werden?

Offensichtlich besteht eine Lösung darin, die Skriptdateien für alle verschiedenen Komponenten in einem Verzeichnis oder irgendwo irgendwo zu haben und einfach TortoiseSVN oder ähnliches zu verwenden, um sie in SVN zu behalten. Wenn dann eine Änderung vorgenommen werden muss, lade ich das Skript in Management Studio usw. hoch .Ich will das nicht wirklich.

Was ich wirklich bevorzugen würde, ist eine Art Batch-Skript, das ich regelmäßig (abends?) ausführen kann, das alle gespeicherten Prozeduren/Ansichten usw. exportiert, die sich in einem bestimmten Zeitraum geändert haben, und sie dann an SVN festschreibt.

Ideen?

War es hilfreich?

Lösung

Für mich hört es sich so an, als ob Sie die Revisionskontrolle nicht richtig nutzen möchten.

Offensichtlich besteht eine Lösung darin, die Skriptdateien für alle verschiedenen Komponenten in einem Verzeichnis oder mehr irgendwo zu haben und einfach Schildkröten oder dergleichen zu verwenden, um sie in SVN zu behalten

Das ist es, was getan werden sollte.Sie hätten Ihre lokale Kopie, an der Sie gerade arbeiten (Neue entwickeln, Alte optimieren usw.), und wenn einzelne Komponenten/Prozeduren usw. fertig sind, würden Sie sie einzeln festschreiben, bis Sie den Prozess von vorne beginnen müssen.

Das Festschreiben von halbfertigem Code, nur weil seit der letzten Festschreibung schon „X“ vergangen ist, ist schlampig und bereitet garantiert allen anderen Benutzern des Repositorys Kummer.

Andere Tipps

Ich finde es am besten, gespeicherte Prozeduren wie jeden anderen kompilierbaren Code zu behandeln:Der Code befindet sich im Repository. Sie checken ihn aus, um Änderungen vorzunehmen, und laden ihn in Ihr Entwicklungstool, um den Code zu kompilieren oder bereitzustellen.

Sie können eine Batchdatei erstellen und diese planen:

  • Löschen Sie den Inhalt Ihres Skriptverzeichnisses
  • etwas verwenden wie SQLScript exportieren um alle Objekte nach Skript/Skripten zu exportieren
  • SVN-Commit

Bitte beachten Sie:Obwohl Sie die Objekte unter Quellcodeverwaltung haben, haben Sie weder die Daten noch deren Verlauf (ist das ein umbenanntes Feld oder 1 neues Feld und 1 gelöscht?).

Dieser Ansatz eignet sich gut für die Pflege des Änderungsverlaufs.Aber natürlich sollten Sie sich nie automatisch auf den „Produktions-Build“ festlegen (es sei denn, Sie mögen kaputte Builds).

Obwohl Sie nicht danach gefragt haben:Dieser Ansatz erzeugt auch keine Reihe von Skripten, die eine aktuelle Datenbank aktualisieren.Sie verfügen nur über anfängliche Erstellungsskripts.Das Aufzeichnen des Datenfortschritts und die Erstellung von Upgrade-Skripts geht über grundlegende Versionsverwaltungssysteme hinaus.

Ich würde es empfehlen Redgate Verwenden Sie hierfür SQL Compare – es ermöglicht Ihnen, Datenbankversionen zu vergleichen und Änderungsskripts zu generieren – es ist außerdem relativ einfach skriptfähig.

Basierend auf Ihrer erweiterten Frage möchten Sie wirklich DDL-Trigger verwenden.Kasse Dieser Artikel Hier erfahren Sie, wie Sie ein Änderungsprotokollsystem für Ihre Datenbank erstellen.

Allerdings bin ich mir bezüglich Ihrer Preisspanne nicht sicher DB Ghost könnte eine Option für Sie sein.

Ich arbeite nicht für dieses Unternehmen (oder besitze das Produkt), aber bei meinen Recherchen zu demselben Problem sah dieses Produkt recht vielversprechend aus.

Ich hätte etwas ausführlicher sein sollen.Die betreffende Datenbank ist für ein internes ERP-System bestimmt und daher verfügen wir nicht über viele Versionen unserer Datenbank, sondern nur über Produktion/Test/Entwicklung.Wenn wir eine Änderungsanforderung, eine neue ausgefallene Funktion oder etwas Ähnliches gestellt haben, führen wir einfach ein Skript oder eine Reihe von Skripten aus, um die betreffenden Prozeduren in der Testdatenbank zu aktualisieren. Wenn das alles in Ordnung ist, machen wir dasselbe mit der Produktion.

Ich bin also nicht wirklich auf der Suche nach einem vollständigen Schemaskript an sich, sondern nur nach etwas, das die verschiedenen Änderungen an den gespeicherten Prozeduren im Laufe der Zeit verfolgen kann.Beispielsweise erledigt PROCESS_INVOICE Dinge.Im März wird es geringfügig aktualisiert.Einige Zeit später, beispielsweise im Mai, stellt sich heraus, dass Kunden in seltenen Fällen eine doppelte Rechnung erhalten (oder in einem anderen verrückten Eckfall).Ich würde gerne sehen, was im Laufe der Zeit mit diesem Verfahren passiert ist.Derzeit ist die Entwicklungsumgebung hier nicht eingerichtet, was ich zu ändern versuche.

Ich kann DBPro empfehlen, das Teil der Visual Studio Team Edition ist.Ich verwende es seit einigen Monaten zum Speichern aller Teile der Datenbank im Team Foundation Server sowie für Bereitstellungen und Datenbankvergleiche usw.

Natürlich hängt es, wie bereits erwähnt, von Ihrer Umgebung und Preisspanne ab.

Ich habe ein Dienstprogramm geschrieben, um alle relevanten Teile meiner Datenbank in eine Verzeichnisstruktur zu kopieren, in der ich SVN verwende.Ich habe nie versucht, es in den Manager zu integrieren, aber wenn Sie interessiert sind, finden Sie es hier: http://www.reluctantdba.com/dbas-and-programmers/sqltools/svnforsql2005.aspx

Es ist kostenlos und da ich es regelmäßig verwende, wissen Sie, dass Fehler schnell behoben werden.

Sie können jederzeit versuchen, SourceSafe in SQL Server zu integrieren.Hier ist ein schneller Anfang: Verknüpfung .Um damit arbeiten zu können, benötigen Sie die Managment Studio Developers Edition.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top