我们有一个中央数据库,需要升级我们的本地数据库。我们正在使用dacpac来做到这一点。基本上我们在服务器上对数据库进行更改。然后我们创建一个dacpac。它被放入部署包中。当客户端运行应用程序时,它会检查是否有新版本。如果有,它将升级。问题是我们有。当您在没有dacpac升级的情况下进行本地数据库更改时,会发出警告,表示已经进行了更改,而不是dacpac。因此,当它升级dacpac(通过vb.net代码完成)时,它完成了该过程,但实际上并没有做任何更改。基本上跳过一切
我的代码如下
如果_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 :(得分:0)
我建议将RegisterDataTierApplication设置为false,除非您打算使用漂移检测功能。