Dacpac没有正确升级代码

时间:2016-03-03 18:56:05

标签: vb.net dacpac data-tier-applications

我们有一个中央数据库,需要升级我们的本地数据库。我们正在使用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

我该怎么做才能解决这个问题?

1 个答案:

答案 0 :(得分:0)

我建议将RegisterDataTierApplication设置为false,除非您打算使用漂移检测功能。