2016-03-03 34 views
0

我們有一箇中央數據庫,需要升級我們的本地數據庫。我們正在使用dacpac來做到這一點。基本上我們對服務器上的數據庫進行了更改。然後我們創建一個dacpac。它被放入部署包中。當客戶端運行應用程序時,它會檢查是否有新版本。如果有,它會升級。問題是我們有。如果在不進行dacpac升級的情況下進行本地數據庫更改,則會發出警告,指出除dacpac之外的更改已經完成。因此,當升級dacpac(通過vb.net代碼完成)時,它會完成該過程,但實際上並未做任何更改。基本上跳過一切Dacpac沒有通過代碼正確升級

我的代碼,隨後

如果_package.Version <> databaseVersion然後

  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

我該怎麼辦才能解決此問題?

回答

0

我建議將RegisterDataTierApplication設置爲false,除非您打算使用漂移檢測功能。