Sql Project Publish ersetzt Deploy - wie man Versionierung und Hook in tfs build unterdrückt

8

Wir verwenden die Sql Server 2012 SSDT, die die Implementierungsoption in Visual Studio für die Datenbankprojekte (jetzt sql-Projekte) entfernt hat. Wir möchten den Veröffentlichungsschritt wie bei der Bereitstellung automatisieren, aber es ist nicht klar, wie dies zu tun ist. Also ein paar Fragen:

  1. Ich habe dem Projekt die Datei .publish.xml hinzugefügt (nach der ersten manuellen Veröffentlichung, indem ich die Option "Zum Projekt hinzufügen" angekreuzt habe). Auch nachdem ich es auf die Standardeinstellung eingestellt habe, wenn ich es doppelklicke, baut es auf, aber öffnet immer das Einstellungsfenster, wo ich auf die Schaltfläche "Veröffentlichen" klicken muss, um fortzufahren. Gibt es eine Einstellung, die diese Eingabe überspringt und die aktuellen Werte verwendet?

  2. Es scheint, dass jede Veröffentlichung eine Version der SQL-Ausgabe generiert. Wie kann ich dies unterdrücken, d. H. Die Basisdatei jedes Mal überschreiben?

  3. Und schließlich wären alle Hinweise für die Aktualisierung des Builds zur Verwendung des neuen Projekttyps und des Veröffentlichungsbefehls für die automatisierten Builds willkommen.

Reuven Trabin 04.04.2012, 15:50
quelle

3 Antworten

7

So stellen Sie die Bereitstellungsoption wieder her: (nur Visual Studio 2010/2012 - dies wird in Visual Studio 2013 nicht mehr unterstützt)

Die Option "Bereitstellen" ist weiterhin vorhanden, aber aus bestimmten Gründen ist sie in den Menüs nicht verfügbar. (Verfluchtes Visual Studio-Team!) Ich habe daran gearbeitet, indem ich die Option Bereitstellen einer der Symbolleisten wie folgt hinzugefügt habe:

  1. Klicken Sie auf den Pfeil auf der rechten Seite einer Symbolleiste.
  2. Klicken Sie auf "Schaltflächen hinzufügen oder entfernen" und dann auf Anpassen.
  3. Klicken Sie im Dialogfeld Anpassen auf Befehl hinzufügen.
  4. Wählen Sie die Kategorie "Build" und dann den Befehl "Deploy Selection".
  5. Nach dem Speichern Ihrer Auswahl wird die Option "[Projektname] bereitstellen" in der Symbolleiste angezeigt. Sie müssen Ihr Projekt im Projektmappen-Explorer auswählen, damit die Schaltfläche aktiviert wird.

Beachten Sie, dass sich die Bereitstellungseinstellungen von den Veröffentlichungseinstellungen unterscheiden. Die Bereitstellungseinstellungen werden in den Eigenschaften des Projekts auf der Registerkarte Debuggen konfiguriert.

Um Ihre Fragen zur Veröffentlichungsoption zu beantworten:

1) Wie Sie eine bestimmte Veröffentlichungsdatei standardmäßig verwenden und die lästige Eingabeaufforderung vermeiden

Ich glaube nicht, dass es einen Weg gibt.

2) So veröffentlichen Sie die gesamte Datenbank, nicht nur die Änderungen

Öffnen Sie Ihre .publish.xml-Datei in einem Texteditor und fügen Sie <AlwaysCreateNewDatabase>true</AlwaysCreateNewDatabase> hinzu.

Zum Beispiel:

%Vor%

3) Befehlszeilensyntax für automatisierte Builds

Erstellen Sie zuerst Ihr Projekt mit msbuild, wie Sie es normalerweise tun würden, damit die .dacpac-Datei in der Bin erstellt wird.

Verwenden Sie dann sqlpackage.exe , um mit Ihrer Datei .publish.xml zu veröffentlichen:

C:\Program Files\Microsoft Visual Studio 10.0\Microsoft SQL Server Data Tools\sqlpackage.exe /Action:Publish /SourceFile:C:\[path to my project]\bin\Debug\MyDatabaseProject.dacpac /Profile:C:\[path to my project]\MyDatabaseProject.publish.xml

Beachten Sie, dass der Pfad zu sqlpackage.exe anders sein kann.

    
Keith 18.04.2012 18:10
quelle
4

Ein bisschen spät zur Party, gebe ich zu, aber vielleicht hilft das anderen, die über diese Diskussion stolpern. Meine Firma bewegt sich derzeit auf VS2012 und wir haben alle drei der gleichen Probleme wie Keith. Ich habe Workarounds für # 1 und # 2 gefunden.

Für # 1 verwende ich AutoHotKey , um das Vorhandensein des Veröffentlichungsfensters zu überwachen und automatisch auf die Schaltfläche "Create Script" zu klicken . Sie könnten das Skript natürlich automatisch auf die Schaltfläche "Veröffentlichen" klicken. In diesem Beispiel, wenn das Veröffentlichungsprofil nicht "XYZ" ist (ich bevorzuge manuelle Intervention für Produktionsserverimplementierungen), dann fahren Sie fort und senden Sie Alt + G, um das Skript zu generieren.

%Vor%

Für # 2 wird bei jeder Veröffentlichung der Dateiname um ein Nummernsuffix erhöht und wir haben viele Dateien in unserem Deployment-Ordner. Ich habe nur vor dem Build-Ereignisse verwendet, um die SQL- und TXT-Dateien vor dem Build zu löschen:

%Vor%     
Shoeless 12.05.2013 14:47
quelle
4

Der beste Weg, um die Bereitstellung von SSDT-Datenbankprojekten zu automatisieren, ist die Verwendung von msbuild. Ursprünglich verwendeten wir VSTSDB und verwendeten msbuild für die * .dbproj-Datei. Wie sich herausstellte, sind die Argumente für die Bereitstellung von sqlproj-Dateien genau gleich.

Da die alte Argumentliste für uns funktioniert, habe ich nicht den Dateistil public.xml verwendet. Es gibt eine Menge Dokumentation für die vsdbcmd.exe und msbuild gegen dbproj. Ich würde das als Referenz verwenden.

Hier sind die Argumentliste und die Ausführungsausgabe, wie wir sie für die Ausführung von FinalBuilder definieren

%Vor%

und das Zusammensetzen der Msbuild-Befehlszeile sieht folgendermaßen aus:

%Vor%     
BozoJoe 06.04.2012 16:09
quelle