版本控制T-SQL的最佳方法?

版本控制T-SQL的最佳方法?

Best way to version control T-SQL?

本问题已经有最佳答案,请猛点这里访问。

Possible Duplicate:
Stored procedures/DB schema in source control

对表,视图,存储库等进行版本控制的最佳方法是什么? 最好是自动化的或至少是半自动化的:)

谢谢


K Scott Allen的文章说了这一切:
http://odetocode.com/Blogs/scott/archive/2008/01/31/11710.aspx


我昨天问了这个,得到了一些不错的答复:

源代码管理中的存储过程/数据库模式


我使用Visual Studio 2008 Pro创建数据库项目(其他项目类型->数据库)。我们已经使用SVN作为代码存储库,因此带有一堆代表存储过程的.sql文件的项目只是放入存储库的另一件事-您可以看到diffs / history等。这与VSS或任何其他功能相同您使用的存储库。

数据库项目的好处是您的项目将记住您的连接字符串,而您要做的就是右键单击.sql文件(或一次选择所有这些!),然后选择运行以在数据库中更新它。这样就可以轻松地从存储库更新.sql文件并全部运行它们以更新所有存储过程,从而验证数据库在几秒钟内即可更新。

您也可以选择创建LINQ项目(Visual C#->数据库),并将所有LINQ代码存储在存储库中。

希望有帮助!


为所有数据库更改编写迁移脚本,并将其保存在存储库中。强制执行仅通过运行脚本对数据库进行所有更改的策略;这样就可以记录已完成的操作,并可以将其还原。调查是否有适用于您喜欢的语言/数据库组合的迁移框架。


我编写了一个DDL触发器,该触发器记录了对SQL对象(触发器,表,SP,视图等)的定义所做的所有更改。我可以很好地从触发器中调用扩展SP,并将详细信息存储在另一个数据库中并将其用作存储库。
但是,如果您的团队确实受到纪律处分,则任何源代码控制都可以解决问题。该触发器用作审核机制,非常适合地理位置分散的团队。


尝试使用Randolph,这是我所知道的最好的SQL版本控制工具之一。


我正在使用Visual Studio数据库版本,该版本可以将架构从SQL Server导出到Visual Studio项目中。然后将其存储在Source Control中,并可以将其部署在任何需要的地方。 VS数据库项目不过是一堆脚本,并且是一种笨拙的工作方式。

一种更可靠的方法是使用数据库迁移框架,如果您使用的是.Net,请查看此博客文章,以获取良好的描述http://flux88.com/NETDatabaseMigrationToolRoundup.aspx。

更新

如评论中所述,此页面已不再存在。因此,这是Wayback机器上的最后一个已知快照http://web.archive.org/web/20080828232742/http://flux88.com/NETDatabaseMigrationToolRoundup.aspx


如果您超级懒惰,则可以使用SMO(SQL Server管理对象),或者如果使用2005之前的SQL Server,则可以使用DMO(分布式管理对象)每天编写所有表/视图/存储过程的脚本,然后将该脚本与该脚本进行比较在源代码管理中,如果有任何更改,请签入新版本。您将无法像在脚本中创建所有数据库更改一样拥有漂亮的脚本,但是至少您可以重新创建所有表/存储的程序/视图。例如,在我的表创建脚本中经常有注释。

这是一篇文章,可以帮助您开始编写脚本:http://www.sqlteam.com/article/scripting-database-objects-using-smo-updated。

同样,这主要是因为您太懒于打扰版本控制,并且如果您在一天内两次更改某些内容也无济于事。此外,仍然必须保存并签入任何数据迁移脚本,因为这不会采用临时SQL,而只会采用数据库对象。


推荐阅读