我试图使用Jenkins自动化现有的sql server数据库部署自动化。
自动化的方法之一是在使用Visual的SQL服务器数据库项目中包含SQL脚本(存储过程、视图、表创建)。使用MSBuild构建项目,并使用SQLPackage.exe部署dacpac。但是,现有数据库引用存储过程/视图中的其他数据库,因此我在Server数据库项目中导入了其他数据库。此外,在提取现有数据库的dacpac时,我会遇到很多错误。我假设这是由于现有代码不兼容dacpac,并且可能需要更改才能兼容dacpac。
是否有其他方法来自动化SQL服务器代码部署,而不是使用server数据库项目?
发布于 2019-05-24 11:45:43
基于SSDT模型的项目的另一种替代方法是迁移脚本方法,正如所讨论的这里。
基于模型的部署需要在构建过程中验证依赖关系,否则在部署期间可能会出现错误。不幸的是,我不知道如何为其他不对dacpac友好的引用数据库创建dacpac,而无需为从源代码构建的引用数据库创建单独的项目。您可以为引用的数据库创建数据库项目,并使用SSDT导入向导提取数据库、项目源代码的架构并清理解决方案。
此任务的复杂性将根据跨数据库和跨服务器依赖项的数量而有很大差异。为了避免循环引用,可能有必要将数据库拆分为单独的项目。
发布于 2019-05-24 18:29:02
SSDT是一个很好的选择,但是您和所有开发人员需要一段时间才能适应它并了解什么是离线开发和基于状态的部署。您可以自己阅读SSDT的工作原理,但是几乎没有给您的建议:
大多数人害怕使用SSDT进行全自动部署,因为脚本是自动生成的,最后的部署脚本只有非常有限的控制(公平地说,您可以使用部署贡献者控制几乎所有的事情,但这是另一个讨论的主题)。通常在脚本生成和部署之间有脚本评审步骤。
因此,如果您要坚持使用SSDT,那么您的操作指南是:
暗示要替换。代码中有几个对象名称的组合:
因此,您可以做的是将实例替换为跨所有文件的$(InstanceName),用$(DatabaseName)替换数据库等等。要有创意,基本上当你知道该怎么做的时候,你可以用这些技巧在几个小时内把几乎所有的数据库放到SSDT上。
https://stackoverflow.com/questions/56289174
复制相似问题