中央データベースがあり、ローカル データベースをアップグレードする必要があります。これを行うためにdacpacを使用しています。基本的に、サーバー上のデータベースに変更を加えます。次に、dacpac を作成します。展開パッケージに入れられます。クライアントがアプリケーションを実行すると、新しいバージョンがあるかどうかがチェックされます。ある場合は、アップグレードされます。問題は私たちが抱えていることです。dacpac をアップグレードせずにローカル データベースを変更すると、dacpac 以外に変更が加えられたという警告が表示されます。そのため、dacpac をアップグレードする (vb.net コードを使用して行う) 場合、プロセスは完了しますが、実際には変更は行われません。基本的に全部スキップ
私のコードは次のとおりです
If _package.Version <> databaseVersion Then
dacOptions.ScriptDatabaseOptions = True
dacOptions.BlockOnPossibleDataLoss = False
dacOptions.IgnoreIncrement = False
dacOptions.BlockWhenDriftDetected = False
dacOptions.RegisterDataTierApplication = True
dacOptions.IncludeTransactionalScripts = True
_service.Deploy(_package, localDB, True, dacOptions)
End If
手動で SSMS にアクセスしてアップグレードしようとすると気付きました。データベースが変更され、データ損失の可能性があるにもかかわらず [続行] をクリックするように求められます。これを行うと、手動で動作します。しかし、コードでは、blockonpossibledataloss=false があってもアップグレードされないようです。
この問題を解決するにはどうすればよいですか?