0

中央データベースがあり、ローカル データベースをアップグレードする必要があります。これを行うために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 があってもアップグレードされないようです。

この問題を解決するにはどうすればよいですか?

4

1 に答える 1

0

ドリフト検出機能を利用する予定がない限り、RegisterDataTierApplication を false に設定することをお勧めします。

于 2016-03-03T22:08:32.073 に答える