sqlpackage.exe ignoriert BlockOnPossibleDataLoss?

12

Ich besitze einen Dacpac, für den BlockOnPossibleDataLoss auf false festgelegt wurde. Die Bereitstellung wird jedoch blockiert, wenn ich sie mit sqlpackage.exe ausführe. Er meldet: "Die Spalte [a] wird gelöscht, es kann zu Datenverlust kommen."

Wenn ich jedoch genau dasselbe Bereitstellungsprofil verwende und in Visual Studio 2012 veröffentliche, wird es durchlaufen.

nojetlag
quelle

Antworten:

8

Haben Sie versucht, sqlpackage.exe über /p:BlockOnPossibleDataLoss=falsedie Befehlszeile auszuführen ?

Ich habe gerade mit SQLPackage.exe eine .dacpac-Datei meiner Testdatenbank erstellt, diese dann mit der /p:BlockOnPossibleDataLoss=falseOption veröffentlicht und meine Datenbank überschrieben .

Max Vernon
quelle
Ich habe es versucht, aber es hat nicht geholfen. Ich habe das Problem ein bisschen weiter eingegrenzt. Ich führe das Paket in einem Powershell-Skript aus und dort befindet es sich in einem Try-Catch-Block. Es scheint, dass, obwohl das Flag gesetzt ist, sqlpackage.exe eine Ausnahme erzeugt (ich würde es anders erwarten)
nojetlag
1
Dies hat bei der Ausführung einer Datenbankbereitstellungsaufgabe in unserem Visual Studio Team System, das für unsere Azure-Datenbank erstellt wurde, hervorragend funktioniert.
Dan Csharpster
2

Schließlich fand das Problem, dass ich sqlpackage.exe innerhalb eines Powershell-Skripts ausführte, in dem die Fehlerbehandlung wie folgt eingestellt ist

$Script:ErrorActionPreference = "Inquire"

Da ich nie die Anfrage bekam, nahm ich an, dass das Problem mit sqlpackage.exe war. Nachdem die ErrorActionPreference festgelegt wurde, war jedoch ein anderes Powershell-Skript enthalten. Es stellte sich heraus, dass das enthaltene Skript auch die ErrorActionPreference festgelegt hatte, jedoch auf "Stop". Trotzdem glaube ich, wenn ich BlockOnPossibleDataLoss = false gesetzt habe, sollte dies nicht zu einem Fehler führen, aber zumindest habe ich jetzt eine Möglichkeit, damit umzugehen.

nojetlag
quelle
2

Ich hatte das gleiche Problem und / p: BlockOnPossibleDataLoss = false funktioniert nicht.

Die endgültige Lösung war in meinem Fall, dass es auch in den Debug-Einstellungen der Projektdatei festgelegt werden muss:

Projekt-Debug-Einstellungen

Hoffe das hilft jemandem! :)

Christian Müller
quelle
und wenn Sie direkt "veröffentlichen", müssen Sie diese Option auch in der "erweiterten" Veröffentlichungsoption einrichten!
Pac0