BlockOnPossibleDataLossを無視するsqlpackage.exe?


12

BlockOnPossibleDataLossをfalseに設定したdacpacがありますが、sqlpackage.exeで実行すると展開がブロックされ、「列[a]が削除されているため、データ損失が発生する可能性があります。」

ただし、まったく同じ展開プロファイルを使用してVisual Studio 2012から発行すると、それが実行されます。

回答:


9

/p:BlockOnPossibleDataLoss=falseコマンドラインでsqlpackage.exeを実行しようとしましたか?

SQLPackage.exeを使用してテストデータベースの.dacpacファイルを作成した後、/p:BlockOnPossibleDataLoss=falseオプションでそれを公開し、データベースを上書きしました。


私はそれを試しましたが、助けにはなりませんでした。問題をもう少し絞り込みました。powershellスクリプト内でパッケージを実行すると、try catchブロック内にあります。(私はそう期待する)フラグがセットsqlpackage.exeが例外を作成しているにもかかわらず、そのようだ
nojetlag

1
これは、AzureデータベースへのVisual Studio Team Systemビルドでデータベース展開タスクを実行している間、非常にうまく機能しました。
ダンCsharpster

2

最後に問題が見つかりました。Powershellスクリプト内でsqlpackage.exeを実行し、エラー処理が次のように設定されています

$Script:ErrorActionPreference = "Inquire"

Inquireを受け取ったことがないので、問題はsqlpackage.exeにあると推測しましたが、ErrorActionPreferenceを設定した後に別のpowershellスクリプトが含まれていたため、含まれたスクリプトにもErrorActionPreferenceが設定されていましたが、「Stop」になりました。それでも、BlockOnPossibleDataLoss = falseを設定した場合、エラーは発生しないはずですが、少なくともそれを処理する方法があります。


2

同じ問題が発生し、/ p:BlockOnPossibleDataLoss = falseが機能しません。

私の場合、最終的な解決策は、プロジェクトファイルのデバッグ設定でも設定する必要があることです。

プロジェクトのデバッグ設定

これが誰かを助けることを願っています!:)


直接「公開」する場合は、「高度な」公開オプションでもこのオプションを設定する必要があります!
Pac0
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.