2016-03-03 36 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,除非您打算使用漂移检测功能。