数据库恢复后,通过dacpac的多层应用程序失败
我有一台运行Windows Server 2016和Sql Server 2016的服务器,在该sql实例中有3个数据库。 所有3个数据库都只能通过DACPAC应用程序更新(从自定义powershell脚本调用sqlpackage,使用TFS发布管理执行)。 发布部署使用相同的DACPAC更新所有数据库,这是发布附带的构建工件。 这些数据库全部注册为使用sqlpackage的RegisterDataTierApplication参数的数据层应用程序。
昨天有人让DBA进行备份并恢复该服务器上3个数据库中的一个。 从那以后,我们一直无法通过DACPAC更新数据库,因为它抱怨Dacinstance已经存在。 有趣的是,漂移报告现在也失败了,出现了一个奇怪的信息。
以下是漂移报告中的错误:
[错误] ***注册为DAC数据库的数据库必须由SQL 2005 SP4,SQL 2008 SP2,SQL 2008 R2,SQL 2012,SQL 2014或Microsoft Azure SQL数据库实例托管。 无法继续对目标实例执行DAC操作,因为它不支持DAC。 指定另一个实例,或者升级到支持DAC的版本。
以下是来自DACPAC应用程序的错误消息:
[错误] ***无法部署软件包。 无法注册数据层应用程序:数据库中已存在DacInstance'MYDATABASENAME'。 DacInstance'MYDATABASENAME'已经存在于数据库中。
我们已经尝试重新应用现在还原的数据库运行的DACPAC版本,并且出现相同的错误。 我们还尝试了与2014年兼容模式下的数据库相同的结果。
所以我的问题是,在从备份恢复数据库之后,如何更新已注册的数据层应用程序?
为了澄清,备份是通过此数据库的SSMS进行的,并通过覆盖现有数据库的顶部进行恢复。 没有名称更改或服务器更改。 此外,同一台服务器上的另外两个数据库在应用相同的DACPAC时没有问题 - 只有从备份恢复的那个数据库才有问题。 每次部署DACPAC时,我们都使用相同的确切PowerShell脚本(调用sqlpackage)。 这些数据库只能以这种方式更新。
由于来自漂移报告关于兼容性的奇怪错误消息,我毫不犹豫地取消注册并尝试将数据库重新注册为数据层应用程序。 有谁知道会导致什么?
有什么适当的步骤摆脱这种情况:恢复的数据库现在无法接受DACPAC的当前版本或更新版本?
链接地址: http://www.djcxy.com/p/62333.html上一篇: tier application via dacpac fails after database restore
下一篇: How to run migration on only specific database name when using fluentMigrator