ここSqlPackage.exe
で説明したように、Visual Studio 2012 の Microsoft SSDT からデータベースを同期するために使用できるので、SQL Server データベース プロジェクトに格納されている というソース データベース オブジェクトと一致するように、 というターゲット データベースを同期するために使用しています。TargetDb
DbProject
コマンドのアクション/a:Publish
によりSqlPackage.exe
、DbProject の .dacpac ファイルを TargetDb に同期できますが、デフォルトの引数は、 DbProject に存在しない TargetDb のオブジェクトをドロップしません。
フラグ/p:DropObjectsNotInSource=true
をオンにするとこれは解決しますが、奇妙な動作も作成されます
- このフラグ
/p:DropObjectsNotInSource=true
は、TargetDb にユーザー/ログイン オブジェクトをドロップしますが、これはまったく予期されていません! 私が見つけることができる最も近いものは です/p:DropRoleMembersNotInSource=false /p:DropPermissionsNotInSource=false
が、それらはあまり役に立ちません。 - フラグはフラグ
/p:DropObjectsNotInSource=true
を壊します/p:BlockOnPossibleDataLoss=true
。つまり、データ損失が発生した場合、更新アクションはブロックされません。それは私が望んでいるものではありません。
現在、TargetDb で「ゴミ箱」/冗長オブジェクトを受け入れる必要があります:(
私をそこに連れて行くために使用するより良いフラグは何ですか?