Best way to version control T-SQL?本问题已经有最佳答案,请猛点这里访问。
对表,视图,存储库等进行版本控制的最佳方法是什么? 最好是自动化的或至少是半自动化的:) 谢谢
K Scott Allen的文章说了这一切: 我昨天问了这个,得到了一些不错的答复: 源代码管理中的存储过程/数据库模式 我使用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,而只会采用数据库对象。 |