Sql server 如何在基于状态的连续数据库部署中实现引用数据
如何在基于状态的连续数据库部署解决方案中实现引用数据 我遇到的典型的基于状态的解决方案是使用一系列部署后SQL脚本来截断引用数据表,然后继续执行Sql server 如何在基于状态的连续数据库部署中实现引用数据,sql-server,database,visual-studio,continuous-integration,continuous-deployment,Sql Server,Database,Visual Studio,Continuous Integration,Continuous Deployment,如何在基于状态的连续数据库部署解决方案中实现引用数据 我遇到的典型的基于状态的解决方案是使用一系列部署后SQL脚本来截断引用数据表,然后继续执行INSERT引用数据,每次执行一行 这个典型解决方案的问题是,开发之外的人有时会改变环境,这些改变需要持续。因此,在部署周期中,需要进行大量的手动比较来识别这些更改,对自动化部署的信任度也越来越低 对于这种典型的实现,是否有其他解决方案可以满足环境可能有不在源代码控制中的重要更改的情况 -- Example of typical solution --
INSERT
引用数据,每次执行一行
这个典型解决方案的问题是,开发之外的人有时会改变环境,这些改变需要持续。因此,在部署周期中,需要进行大量的手动比较来识别这些更改,对自动化部署的信任度也越来越低
对于这种典型的实现,是否有其他解决方案可以满足环境可能有不在源代码控制中的重要更改的情况
-- Example of typical solution
-- drop existing data
TRUNCATE myReferenceData
-- insert all data to produce specific state
INSERT INTO myReferenceData (Col1, Col2) Values ("one", 1)
INSERT INTO myReferenceData (Col1, Col2) Values ("two", 2)
-- etc
我认为部署后脚本是最好的选择(假设您使用的是SSDT,而不是RedGate)。
为了维护参考数据,我通常使用以下模式:
另外,确保每个人都了解哪些表是由部署脚本维护的,并且不能在源代码管理之外手动更新,这一点非常重要。因此,如果有人没有遵循这个过程,就责怪他们。您需要明确定义哪些表不能在开发之外更新。您的问题是什么?您什么都没问。“在基于状态的连续部署设置中,有没有管理参考数据的好的替代解决方案?”我的意思是您的具体编程问题是什么,您没有问。这只是一个建议问题,这与堆栈溢出无关。我想问的是,在基于状态的连续交付场景中,是否有其他公认的方法来管理引用数据。“典型解决方案”是其他堆栈溢出问题的典型答案,因此我想将我的问题与其他问题区分开来。@Larnu我正试图改写这个问题,因为我非常希望得到答案,我不希望问题被否决,过早地结束。现在它问了一个合理的问题吗?我也在考虑使用临时表和merge语句的组合来应用引用数据,而不必删除实时数据(在阅读本文之后)。我将花更多的时间来研究这个解决方案。关于你是如何做到这一点的,有什么有用的建议吗?我会集中在清晰的沟通上,在开发之外可以改变什么。