Tsql SQL Server数据库更改部署
我正在努力跟上数据库的变化,以及如何干净地维护和部署从Dev到PRD从一个版本到另一个版本的数据库变化 目前,我使用一个SQL脚本来找出自上次发布以来发生了什么变化Tsql SQL Server数据库更改部署,tsql,sql-server-2005,deployment,dbdeploy,Tsql,Sql Server 2005,Deployment,Dbdeploy,我正在努力跟上数据库的变化,以及如何干净地维护和部署从Dev到PRD从一个版本到另一个版本的数据库变化 目前,我使用一个SQL脚本来找出自上次发布以来发生了什么变化 进程和视图更容易推进,因为我可以简单地删除并重新创建(如果存在) 由于不能简单地删除现有表,因此表更改更加困难 但我认为我无法理解的主要问题是,在任何两个主要的PRD版本之间,我们都有多个针对Dev和UAT的迷你版本 只要我从其他开发人员那里得到一个变更列表,我就可以发布Dev和UAT的迷你版本,我将它与我的结合起来,然后发布一
- 进程和视图更容易推进,因为我可以简单地删除并重新创建(如果存在)
- 由于不能简单地删除现有表,因此表更改更加困难
有什么想法吗,伙计们?非常感谢任何帮助我不熟悉TFS,我以前使用过Git(CVS和SVN),因此请正确看待这个答案 管理和版本化SQL位一直是我最糟糕的噩梦。 有一些工具可以简化变更管理,红门SQL开发包,它可以处理比较,并允许连接到版本控制系统。对于您的请求,您可以使用idera SQL比较工具集来衡量,idera的完美主义方法不应该被过度看待 无论如何,在我看来,管理变更不能也不应该被视为一个技术问题,它必须是it治理的一部分,并且是程序性的,它需要记录并在任何相关职能部门之间进行沟通 当一些小版本、热修复、微更改或类似的事情发生时,它们必须反映在需要得到它的所有其他环境中 当然,如果在生产环境中有一个迷你版本,并且您处于UAT的中间位置,那么您可能不希望在该环境中插入迷你版本。IMO,在UAT之后不久,您应该将迷你版本应用于环境,并执行E2E QA会话,以确保环境良好 如果你阅读我前面的段落,你可能会发现一些问题,比如说UAT有一个SP版本4,而同一个SP的迷你版本是2。。。您如何确保自己不会导致回归? 这是版本控制系统和合并工具提供帮助的时候。红门工具还可以帮助您构建部署。 但是,我相信治理、沟通和遵守规则是持续成功的最重要因素 目前的趋势是实施持续集成,并按需构建测试环境,包括内部、托管和云上。通常,它们的建造和维护成本并不低,但它们是值得的 最后但并非最不重要的一点是,在为SQL部署进行开发时,您应该遵守两条相同的规则:
- 在创建过程之前,请检查它是否存在,并在创建之前将其删除
- 在执行任何插入操作之前,请检查该行是否不存在,然后执行insert else update
- DDL
- 为上述DDL应用DCL
- 为表应用DML
- 创建/更改表
- 创建/更改视图
- 刷新所有视图
- 创建/更改函数
- 创建/更改函数
- 执行每个DML李>
我知道我迟到了,但请尝试使用最适合控制数据库对象的源代码和同步的工具。我已经使用这个工具很长时间了,并且对结果很有信心。有许多选项可以将SQL脚本、用户、安全性、设置和数据从一个数据库同步到另一个数据库。感谢@Luis的详细解释;我想这一定是我的解释不好,我没能把我的问题恰当地解释清楚。我已经在我的部署脚本中遵循了一个序列,它与您所列出的序列相似(如果不相同的话)。但我的主要问题或需要是以编程方式计算出所有对象的更改,而不是手动计算出更改了什么。不过,我完全同意您对序列部分的看法。@RobertDinaro看一看,他们有处理版本控制、比较和部署脚本的工具。最有可能的是,他们可以通过编程方式处理所有更改的对象。谢谢@Luis——这是一家不想更改的公司的工作场所