我们有一个中央数据库,需要升级我们的本地数据库。我们正在使用 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
我能做些什么来解决这个问题?