Gewusst wie: hinzufügen von Gespeicherten Prozeduren, Version Control
Unsere Mannschaft gerade zum ersten mal erlebt, den Streit nicht mit version control für unsere DB. Wie können wir hinzufügen, gespeicherte Prozeduren mindestens an version control? Das aktuelle system wir entwickeln, beruht auf der SPs vor allem.
- Ähnlicher Eintrag: stackoverflow.com/questions/146543/...
Du musst angemeldet sein, um einen Kommentar abzugeben.
Hintergrund: ich entwickle ein system, das fast 2000 gespeicherten Prozeduren.
Kritische Sache, die ich gefunden habe, ist zu behandeln, die Datenbank als eine Anwendung. Sie würde nie öffnen Sie eine EXE-Datei mit einem hex-editor direkt zu Bearbeiten. Das gleiche mit einer Datenbank; ganz einfach, weil Sie können Bearbeiten Sie die gespeicherten Prozeduren aus der Datenbank bedeutet nicht, Sie sollten.
Behandeln die Kopie der gespeicherten Prozedur in der Quellcodeverwaltung als die aktuellen version. Es ist dein Quellcode. Überprüfen Sie es heraus, Bearbeiten, testen, installieren Sie es und überprüfen Sie es wieder in. Das nächste mal, es muss geändert werden, Folgen Sie dem gleichen Verfahren. Nur als eine Anwendung erfordert ein build-und deploy-Prozess, so sollten die gespeicherten Prozeduren.
Den code unten ist ein guter gespeicherte Prozedur Vorlage für diesen Prozess. Es behandelt beide Fälle ein update (
ALTER
) oder neu installieren (CREATE
).Allerdings folgende Beispiel ist besser in Situationen, in denen Sie den Zugriff auf die gespeicherten Prozeduren. Die
DROP
-CREATE
Methode verliertGRANT
Informationen.Darüber hinaus erstellen eines Prozesses zum erstellen der Datenbank komplett von der Quelle Steuern, die helfen können, halten die Dinge kontrolliert.
Erstellen Sie eine neue Datenbank aus der Quellcodeverwaltung.
Verwenden Sie ein tool wie Red Gate SQL Vergleichen, vergleichen, zwei Datenbanken und identifizieren Unterschiede.
Die Unterschiede abgestimmt.
Eine billigere Lösung ist einfach zu benutzen, die "Skript" - Funktionalität von SQL-Management-Studio und machen Sie einen text vergleichen. Jedoch, diese Methode ist echt empfindlich auf die genaue Methode SSMS verwendet, um die format der extrahierten SQL.
Ich würde auf jeden Fall empfehlen, einige Drittanbieter-tool, integriert in SSMS. Abgesehen von SQL Source Control oben erwähnt, können Sie auch versuchen, SQL-Version von Apex.
Wichtige Sache ist, um diese wirklich einfach für die Entwickler, wenn Sie wollen, dass Sie es verwenden und die beste Möglichkeit ist zu verwenden tool, das integriert sich in SSMS.
Ich denke es ist wichtig zu haben jede gespeicherte Prozedur Niederschrift einer separaten .sql-Datei, und dann Begehen diese Dateien in die its-source-control. Jedes mal, wenn ein sproc geändert wird, aktualisieren Sie das Erstellungsskript - damit haben Sie die volle version der Geschichte auf einer sproc von sproc basis.
Gibt es SQL-Server-source-control-tools, die Haken in SSMS, aber ich denke, Sie sind nur Skripten für die db-Objekte und Begehen diese Skripts. Red Gate sieht aufgrund die Freigabe so ein tool in diesem Jahr zum Beispiel.
Nur die
CREATE
- Anweisung, um die source-control in einem .sql-Datei, z.B.:Stellen Sie sicher, dass Sie nur einmal einen SP pro Datei, und, dass der Dateiname exakt mit der übereinstimmt, wird der name der Prozedur (es macht die Dinge so viel leichter zu finden die Verfahren in der Quellcodeverwaltung)
Du dann nur disziplinarisch bestraft werden müssen, über die nicht die Anwendung einer gespeicherten Prozedur in Ihre Datenbank, die noch nicht kommen, von der Quelle Kontrolle.
Wäre eine alternative zum speichern der SP als
ALTER
- Anweisung statt - dies hat den Vorteil, dass es einfacher zu aktualisieren, eine vorhandene Datenbank, aber Sie tun müssen, einige Optimierungen, um erstellen Sie eine neue leere Datenbank.Ich habe mit diesem tool http://timabell.github.com/sqlHawk/ für genau diesen Zweck.
Dem Weg um sicherzustellen, dass niemand vergisst, zu prüfen, in Ihre aktualisierten .sql-Dateien auf Ihrem build-server zu zwingen, die staging-und live-Umgebungen zu entsprechen-source-control 😉 (was dieses tool wird Ihnen helfen, mit).
2. Lösung von @Darryl funktionierte nicht wie vorgeschlagen von @Moe. Ich veränderte @Darryl template und ich habe es funktioniert, und dachte, es wäre schön, es zu teilen mit jedermann.
Ist das wirklich schön, weil ich nicht verlieren, mein stored procedure Berechtigungen.