Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 将数据库从开发/测试移动到产品的最佳实践_Sql_Sql Server - Fatal编程技术网

Sql 将数据库从开发/测试移动到产品的最佳实践

Sql 将数据库从开发/测试移动到产品的最佳实践,sql,sql-server,Sql,Sql Server,使用dev或测试机副本更新/移动Prod中的数据库的最佳实践是什么?对于我们来说,我们通过T-SQL语句(创建表等)移动它。我们从不复制实际的数据库,在生产服务器上运行T-SQL之前,我们对代码进行了检查 此外,确保您所做的任何事情都能够在出现问题时回滚。是的,您可以创建一个DTS作业,以便及时从转储导入 我使用RedGate的SQL比较工具来保持两个数据库的模式同步。这并不便宜,但如果你不断推动生产变革,这是值得的 我使用RedGate工具创建脚本。启动wtih dev/test/prod a

使用dev或测试机副本更新/移动Prod中的数据库的最佳实践是什么?

对于我们来说,我们通过T-SQL语句(创建表等)移动它。我们从不复制实际的数据库,在生产服务器上运行T-SQL之前,我们对代码进行了检查


此外,确保您所做的任何事情都能够在出现问题时回滚。

是的,您可以创建一个DTS作业,以便及时从转储导入


我使用RedGate的SQL比较工具来保持两个数据库的模式同步。这并不便宜,但如果你不断推动生产变革,这是值得的


我使用RedGate工具创建脚本。启动wtih dev/test/prod all matching,然后在dev中进行更改。使用RedGate Compare和Data Compare(根据需要)将dev与test进行比较,并让它生成脚本。然后,我可以在将更改移动到prod时使用相同的脚本。

对于类似于RedGate的工具的免费工具,请参见此项目:


我们使用它来保持开发和生产数据库的同步。与RedGate的工具相比,它没有那么华而不实,但它工作得非常完美,而且价格也比不上它。额外的好处:您可以获取源代码,如果愿意,可以自己修改。

Me也可以。杰克·马凯蒂:谢谢你的建议。我尝试使用该软件,但看起来它无法解决表之间的依赖关系。例如,假设一个列的名称已更改,该列也在一个新的外键列上被引用。看起来这些执行的顺序不是自动完成的。(首先更改列名,然后创建外键列,而不是相反)。这就是它的工作原理还是我遗漏了什么?有一些情况下,我制作脚本,然后编辑它。我不使用很多外键,但在这种情况下,我仍然会使用RedGate来生成脚本,然后根据需要进行更改。在测试中运行它,如果它有效,您就可以使用prod了。@thursdaygeek-谢谢您的建议。我尝试使用该软件,但看起来它无法解决表之间的依赖关系。例如,假设一个列的名称已更改,该列也在一个新的外键列上被引用。看起来这些执行的顺序不是自动完成的。(首先更改列名,然后创建外键列,而不是相反)。这就是它的工作原理还是我遗漏了什么?我对此没有任何问题,但听起来你正在做更复杂的更改。我注意到它删除外键和索引,对表进行更改(有时将数据复制到临时表,然后在更改后将其复制回来),然后重新创建索引和外键。始终可以将更改保存到脚本,并在脚本上进行微调。即使它没有变得完美,它仍然可以节省大量的工作。