dacpac 到 dacpac 比较和部署到数据库问题?
dacpac to dacpac comparision and deployment to DB issues?
两年前在 SQL 服务器论坛上有一个关于比较测试 DACPAC(就绪)<=> 生产 DACPAC 的类似问题,目的是部署到生产数据库服务器。
显然是 MS 的人建议的,不推荐。这仍然有意义吗?我们希望自动化我们的部署,以使用 DACPAC 比较实现持续构建和部署。
如果您认为不推荐使用 DACPAC,请说明原因?你会建议什么?
URL Link 转原 SQL 论坛问题在这里:
https://social.msdn.microsoft.com/Forums/sqlserver/en-US/a1e5fb60-3283-4acc-b793-cb28e327dd39/using-dacpac-files-in-an-integrated-deployment-process?forum=ssdt
将 dacpac 与 dacpac 进行比较没问题,但这样做可能会出错。例如,"production dacpac" 的目标平台可能与您的生产数据库的实际平台不同,这可能导致生成的脚本包含 T-SQL,这在您的生产服务器上不起作用。或者,在 "production dacpac" 中指定的数据库选项可能与您的生产数据库的实际数据库选项不匹配,这可能再次导致生成的脚本包含 T-SQL,这将无法在您的生产数据库上运行。
最糟糕的是,"production dacpac" 可能不等同于生产数据库——即生产数据库中可能存在一些不在 "production dacpac" 中的对象,反之亦然—— - 这可能会导致意想不到的副作用,例如架构或数据丢失。
这就是为什么一般来说,我们建议直接使用生产数据库作为目标而不是 dacpac 与 dacpac 比较来部署或生成部署脚本。
您还可以将数据库注册为 DAC,这样您就可以在发布代码之前检测漂移。如果检测到漂移,您可以
- 将生产中所做的更改重新添加到您的源代码中
- 接受更改将被覆盖,这意味着您需要将数据库重新注册为 DAC,然后再进行部署。
通过从开发到生产的标准部署过程,您可以使用漂移检测来查看是否有人做了他们不应该做的事情,并且您可以相信环境没有改变。我不建议比较 dacpac 和 dacpac。
两年前在 SQL 服务器论坛上有一个关于比较测试 DACPAC(就绪)<=> 生产 DACPAC 的类似问题,目的是部署到生产数据库服务器。
显然是 MS 的人建议的,不推荐。这仍然有意义吗?我们希望自动化我们的部署,以使用 DACPAC 比较实现持续构建和部署。
如果您认为不推荐使用 DACPAC,请说明原因?你会建议什么?
URL Link 转原 SQL 论坛问题在这里: https://social.msdn.microsoft.com/Forums/sqlserver/en-US/a1e5fb60-3283-4acc-b793-cb28e327dd39/using-dacpac-files-in-an-integrated-deployment-process?forum=ssdt
将 dacpac 与 dacpac 进行比较没问题,但这样做可能会出错。例如,"production dacpac" 的目标平台可能与您的生产数据库的实际平台不同,这可能导致生成的脚本包含 T-SQL,这在您的生产服务器上不起作用。或者,在 "production dacpac" 中指定的数据库选项可能与您的生产数据库的实际数据库选项不匹配,这可能再次导致生成的脚本包含 T-SQL,这将无法在您的生产数据库上运行。
最糟糕的是,"production dacpac" 可能不等同于生产数据库——即生产数据库中可能存在一些不在 "production dacpac" 中的对象,反之亦然—— - 这可能会导致意想不到的副作用,例如架构或数据丢失。
这就是为什么一般来说,我们建议直接使用生产数据库作为目标而不是 dacpac 与 dacpac 比较来部署或生成部署脚本。
您还可以将数据库注册为 DAC,这样您就可以在发布代码之前检测漂移。如果检测到漂移,您可以
- 将生产中所做的更改重新添加到您的源代码中
- 接受更改将被覆盖,这意味着您需要将数据库重新注册为 DAC,然后再进行部署。
通过从开发到生产的标准部署过程,您可以使用漂移检测来查看是否有人做了他们不应该做的事情,并且您可以相信环境没有改变。我不建议比较 dacpac 和 dacpac。