5

Angenommen, Sie haben ein Datenbankprojekt, und Sie haben in Ihren Database.sqldeployment-Einstellungen NICHT die Option "Datenbank immer neu erstellen" aktiviert. Angenommen, Sie stellen die Bereitstellung auf einem Server bereit, auf dem bereits eine Datenbank mit dem Namen des Servers installiert ist, den Sie bereitstellen.Wie verhindern Sie, dass eine VS2010 Database Project Deployment eine Drop-Datenbank generiert?

Unter welchen Umständen generiert die Datenbank ein Skript mit einer "DROP DATABASE" -Anweisung?

Wenn Sie niemals möchten, dass Ihre Datenbank jemals vom Bereitstellungsskript gelöscht wird, das durch Klicken mit der rechten Maustaste auf Ihr Datenbankprojekt und Auswahl von "Bereitstellen" erstellt wurde, können Sie dies verhindern.

+0

Sie könnten die Projekt- und Einstellungsdateien überhaupt posten? AFAIK die Option, die Sie erwähnt haben, ist die einzige, die eine DROP-DATENBANK zu Skripten führen würde. –

+0

Leider nicht, weil das Projekt dem Kunden gehört. Ich kann das auch nicht reproduzieren. Das Projekt generiert jetzt das Skript ohne das Ablegen. Ich versuche herauszufinden, was es verursacht haben könnte, das Skript mit einem Tropfen vorher zu erzeugen. Frank, unten, hatte einen guten Gedanken über die Target Connection. Obwohl die Zielverbindung festgelegt wurde, ist es möglich, dass sie nur in meinen Projekteinstellungen und nicht in meinen isolierten Umgebungseinstellungen festgelegt wurde. Ich habe auch darüber nachgedacht, dass eine Zielverbindung zwar definiert, aber nicht durch VPNs verursacht wurde. IDK. –

+0

Ah das macht Sinn. Ja, die isolierten Dev-vs-Projekteinstellungen können etwas verwirrend sein. Froh, dass sie diese Idee in SSDT aufgegeben haben. Erinnern Sie sich daran, ob die Bereitstellung interaktiv erfolgt ist oder hat ein Build-Server sie für Sie ausgeführt? Wenn es Letzteres war, dann könnte etwas hilfreiches im Build-Protokoll enthalten sein. –

Antwort

3

Zusätzlich zu der Option "Datenbank immer neu erstellen", die nicht abgehakt ist, sollten Sie auch die Registerkarte Entwicklung auf der Eigenschaftenseite Ihres Datenbankprojekts überprüfen. Stellen Sie sicher, dass Sie eine Zielverbindung definieren. Wenn Sie keinen definieren, wird das Projekt immer und nur dann bereitgestellt, wenn die Zieldatenbank nicht existiert. Dieses Verhalten ist von Entwurf. Weitere Informationen finden Sie unter link.

Mein Vorschlag ist, die Verbindung mit Windows-Authentifizierung zu erstellen, so dass jeder Benutzer Zugriff auf den Umfang haben kann, die sie sollen.

Bitte beachten Sie auch, dass Sie die deploy müssen tun Aktion dies für jede Deployment-Konfiguration (zB Debug, Freigabe usw.)

ich persönlich auf nur ein Skript erstellen und manuell auf die ausgeführt werden soll sichere Seite!

+1

Danke Frank. Wie sich herausstellte, hatte ich eine Zielverbindung für diese Projektkonfiguration definiert, es war eine gültige Verbindungszeichenfolge, und ich habe die Deploy-Aktion so eingestellt, dass nur das Skript generiert wurde, damit ich manuell von SSMS aus arbeiten konnte. Das Skript enthielt jedoch noch eine Drop-Anweisung. Sie machen einige großartige Vorschläge, und selbst nach dem Lesen des großartigen Links, den Sie angegeben haben, habe ich immer noch das Gefühl, dass es noch einen anderen Grund dafür gibt, dass mein Bereitstellungsskript eine Drop-Datenbank generiert hat. –