我需要的是非常基本的,我不想重新发明轮子。我喜欢剧本我的数据库,并编写脚本来从一个版本升级到下一个,即001创建-tables.sql,002-改变,column.sql等。

我要的是一个简单的工具命令行或的MSBuild将看一个数据库查看数据库是在(使用一些表约定)是什么版本,并运行所有的脚本有一个较大的数字比目前的文件夹中数据库版本。我想如果失败也像工具回滚脚本/抛出一个错误,在这一点上停下来。

这是我想什么,但我不介意改变我的约定,虽然我很想写我自己的SQL脚本。我也希望工具是免费或开源的,因为我并不需要太多。 由于我的项目是C#我宁愿工具建立在.net

有帮助吗?

解决方案 7

行,所以我不喜欢任何的,我发现那里的选项。我发现了一些很好的工具来创建脚本,但没有什么会跟踪数据库的版本并运行新的脚本。反正我继续滚我自己的开源工具来完成这项工作。如果你想使用它,你可以从CodePlex上下载如果叫 KissDB 。我也扔了一个博客张贴关于它在我的博客的 blog.RunXc

其他提示

让你看着打开DBDiff 了吗?它可能是一个很好的起点。

如果您改变了主意关于开源,红门的SQL比较是去IMO的方式。

有一个名为 SQLRunner 在SourceForge上非常有趣的项目 - 这是C#,它是.NET,它是过去 “阿尔法预” :-)

我没有用它自己,但还是 - 看起来相当不错,恕我直言

马克

这是一个棘手的问题,简单明了。在其他的答案中提到的工具,绝对可以帮助,但你还是留下来自己做了很多。

事实上,我有一个表中我的架构,其存储针对每个改变脚本的ID(它的情况下数字匹配在我的问题/错误跟踪系统)。在每次更改脚本的最后,我插入ID到该表。我有一个单独的脚本来检查,看看有什么对数据库的任何特定实例已经完成。这将是自动运行的每一个尚未运行的脚本是可行的,但我喜欢运行更改脚本手动以防出错。

回滚可以是几乎不可能,特别是由于许多模式更改需要某种数据迁移。我发现,与任何更改架构的最佳实践是让他们向后兼容。从不重命名(至少在第一)列或表。只添加东西,让所有新增加了空。回滚脚本只是删除新的东西,如果你知道什么是不完全正确。当然你结束了旧的,未使用的列和表,让你写你的当前版本被认为是稳定后运行第二个脚本,它摆脱了旧的东西。

我要自己写所有的脚本,你可以利用 SQL Server 2005中TableDiff实用,会给你一个很大的灵活性。一些有用的例子可以找到此处

如果你把所有的脚本的文件夹中的一个给定的版本,你可以,如果你把它放在该文件夹中运行此作为批处理文件:

for %%X in (*.SQL) do SQLCMD -S <SERVER_NAME> -d <DATABASE_NAME> -E -I -i "%%X"  >> ResultBatch.txt

对不起,我不记得在那里我得到这个从否则我会给予信贷。

我们有我们的开发人员检查数据库更改脚本到颠覆。所有的脚本是可重复的,所以你可以在没有错误多次运行它们。我们还链接改变脚本以项目或错误号,所以我们可以憋了变化,如果需要设置。然后,我们有踢出了所有的正确排序的变化的单一SQL脚本文件的自动生成过程。这种单一的文件来推动更改测试,QA和生产环境。我们认为这是与企业发展的最佳途径。我们如何做的更多细节它这里您的反馈意见,将不胜感激。

使用liquibase。它的Java虽然。

是的,你可以在你选择的SQL变种编写迁移脚本。

据充分测试,并通过大量的人使用。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top