it-swarm.com.de

Gespeicherte Prozeduren unter Quellcodeverwaltung, Best Practice

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 integrieren? Ich verwende derzeit VS 2010 als meine Entwicklungsumgebung und stelle mithilfe von SQL Server Data Tools (SSDT) ​​eine Verbindung zu einer externen SQL Server 2008 R2-Datenbank her.

Was ich in der Vergangenheit getan habe, ist, die Prozesse in einer .sql-Datei zu speichern und diese Dateien unter Quellcodeverwaltung zu halten. Ich bin sicher, es muss einen effizienteren Weg geben als diesen? Gibt es eine Erweiterung, die ich auf VS2010, SSDT oder sogar SQL Server auf dem Produktionscomputer installieren kann?

16
QFDev

Es gibt Tools wie dies von Redgate , aber ich habe immer festgestellt, dass es am besten ist, als SQL-Dateien zu speichern, vielleicht sogar in einem Datenbankprojekt (SSDT?) In Ihrer Lösung.

Zusammen mit diesem schlage ich die folgenden Richtlinien vor:

  • Nehmen Sie immer die SVN-Version als "aktuell"/"aktuell" an.
  • Stellen Sie sicher, dass jedes von Ihnen ausgeführte Skript ein entsprechendes "if exists then drop" am Anfang
  • Denken Sie daran, Ihre Berechtigungen gegebenenfalls zu skripten

Sie können diese SQL-Dateien zunächst erstellen, indem Sie direkt aus SSMS Skripte erstellen, und Sie können SSMS so einstellen, dass alle Ihre "drop" und "create" sowie Ihre Berechtigungen skripten.

14
RoKa

Durch das Speichern der SQL-Dateien in der Quellcodeverwaltung können Sie nur die SQL-Dateien steuern. Es steuert weder die Änderungen der tatsächlichen Datenbankobjekte noch verhindert es die gleichzeitige Änderung desselben Datenbankobjekts durch mehrere Benutzer (und ich denke, Sie möchten dies auch unter Kontrolle haben). Wir verwenden ein Drittanbieter-Tool ( ApexSQL-Version ), das sowohl in SSMS als auch in VS integriert ist. 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 niemand sie bearbeiten 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 anders als die Version eines Live-Objekts haben (ich verwende diese, wenn ich für den Tag abreise und plane, die Änderungen abzuschließen und sie beim nächsten zu testen).

4

Versuchen Sie Ankhsvn , sehr zu empfehlen und kostenlos.

Von der Homepage:

AnkhSVN ist ein Subversion-Quellcodeverwaltungsanbieter für Microsoft Visual Studio 2005, 2008, 2010 und 2012 .

AnkhSVN bietet Apache ™ Subversion®-Quellcodeverwaltungsunterstützung für alle von Visual Studio unterstützten Projekttypen und ermöglicht es Ihnen, die gängigsten Versionskontrollvorgänge direkt in der Microsoft Visual Studio-IDE auszuführen.

Das Dashboard "Ausstehende Änderungen" bietet Ihnen einen einzigartigen Einblick in Ihren Entwicklungsprozess und bietet einfachen Zugriff auf den Quellcode und die Funktionen zur Problemverwaltung. Durch die SCC-Integration (Deep Source Code Control) können Sie sich auf die Entwicklung konzentrieren, während AnkhSVN alle Ihre Änderungen verfolgt und Ihnen die Tools zur Verfügung stellt, mit denen Sie Ihre spezifischen Anforderungen effektiv erfüllen können.

3
SqlACID

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 verfügen über 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 erstellen können.

Das Schema ist jedoch normalerweise nur ein Teil der Equasion. Im wirklichen Leben stellt sich heraus, dass Datenbanken bereits viele Daten enthalten. Und meine Benutzer neigen dazu, ziemlich enttäuscht zu werden, wenn sie es verlieren.

Sobald ich v1.0 eingeführt habe, besteht die Notwendigkeit, Upgrade-Skripte zu verwalten. Manchmal enthalten diese nur Schemaänderungen, aber oft muss ich Standardeinstellungen basierend auf dem Inhalt einer anderen Tabelle erstellen, eine bestimmte Einschränkung freigeben, bis ich die Daten gesetzt habe usw. Normalerweise reicht ein einfaches Upgrade des Schemas nicht ganz aus. Ich bevorzuge es, dieses Upgrade-Skript auch in einem separaten Ordner im Datenbankprojekt zu haben. Diese sehen normalerweise wie ein Upgrade von v1.0 auf v1.1 aus.

Meine Datenbanken haben immer eine Referenztabelle, die mir die aktuelle Versionsnummer angibt, damit ich inkompatible Upgrades blockieren kann. Die erste Anweisung in meinen Upgrade-Skripten überprüft die aktuelle Version und rettet, ob sie von den erwarteten abweicht.

Ein weiterer Vorteil der Datenbankprojekte besteht darin, dass verschiedene Datensätze basierend auf demselben Schema bereitgestellt werden können. Ich habe verschiedene Datensätze für die Entwicklung, das QS-Team, den Benutzerakzeptanztest und für automatisierte Integrationstests. Da ein Datenbankprojekt nur ein Skript nach der Bereitstellung enthalten kann, besteht der Trick darin, ein neues Datenbankprojekt zu erstellen, das auf das 'Master'-Projekt verweist, und das benutzerdefinierte Dataset in die Nachbereitungsprozesse dieses Projekts einzubeziehen.

Dies waren meine 2 Cent. Was auch immer Sie vor allem tun, es muss zu Ihnen und Ihrem Team passen und Sie hoffentlich bei den meisten gängigen Aufgaben unterstützen.

3
souplex

Verwenden Sie RedGate Source Control, um es an Ihre Quellcodeverwaltung anzuschließen.

http://www.red-gate.com/products/sql-development/sql-source-control/

Es verbindet Ihr SSMS direkt mit Ihrem Quellcodeverwaltungs-Repository und ermöglicht sogar das Einchecken statischer Daten.

Klappt wunderbar

3
druzin

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 beschrieben, wie Sie SQL Server als Quellcodeverwaltung verwenden. http://gitsql.net/documentation-04_SQL_Server_and_GIT

Ich habe versucht, es so einfach wie möglich zu machen. (3 Bildschirme)

  • Stellen Sie eine Verbindung zu SQL Server her
  • Objekte auswählen
  • Ordner zum Exportieren/Importieren ausgewählt

Ich habe auch - versehentlich - die Funktion hinzugefügt, einzelne Objekte zum Importieren oder Exportieren selektiv auswählen zu können. Das macht es beim Entwickeln sehr einfach.

Normalerweise würde ich eine gespeicherte Prozedur und eine Tabelle ändern und diese beiden Objekte dann in ein GIT-Verzeichnis exportieren.

Dann benutze ich Source Tree, um die Änderungen visuell zu sehen und sie dann in Bitbucket zu übertragen, wenn ich glücklich bin.

0
Anup Saund