我们有一个中央数据库,需要升级我们的本地数据库。我们正在使用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,它似乎仍然不能升级
我能做些什么来解决这个问题?
发布于 2016-03-04 06:08:32
我建议将RegisterDataTierApplication设置为false,除非您打算使用漂移检测功能。
https://stackoverflow.com/questions/35780638
复制相似问题