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

时间:2008-09-17 16:45:27

标签: sql version-control

  

可能重复:
  Stored procedures/DB schema in source control

版本控制我的表,视图,sprocs等的最佳方法是什么?优选自动化或至少半自动化:)

由于

8 个答案:

答案 0 :(得分:3)

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

Stored procedures/DB schema in source control

答案 1 :(得分:3)

答案 2 :(得分:1)

为所有数据库更改编写迁移脚本,并将它们保存在存储库中。强制执行仅通过运行脚本对数据库进行所有更改的策略;这样就有了已经完成的事情的记录,以及恢复它的方法。调查是否有适用于您喜欢的语言/数据库组合的迁移框架。

答案 3 :(得分:1)

我使用Visual Studio 2008 Pro创建数据库项目(其他项目类型 - >数据库)。我们已经使用SVN作为代码存储库,所以带有一堆代表存储过程的.sql文件的项目只是放入存储库的另一个东西 - 你可以看到差异/历史记录等。这与VSS或任何其他工作相同您使用的存储库。

数据库项目的优点在于您的项目将记住您的连接字符串,您只需右键单击.sql文件(或立即选择所有文件!)并选择运行以更新它数据库。这样可以轻松地从存储库更新.sql文件并运行它们来更新所有存储过程,验证数据库是否在几秒钟内更新。

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

希望有所帮助!

答案 4 :(得分:0)

如果你是超级懒人,你可以使用SMO(SQL Server管理对象)或者如果使用2005之前的SQL Server,DMO(分布式管理对象)每天脚本化所有表/视图/存储过程,然后比较脚本到源代码控制中的脚本,如果有任何更改,请检查新版本。您将无法像脚本中创建所有数据库更改那样拥有相同的脚本,但至少可以重新创建所有脚本表/存储过程/视图。例如,在我的表创建脚本中经常有注释。

这篇文章旨在帮助您开始编写脚本:http://www.sqlteam.com/article/scripting-database-objects-using-smo-updated

同样,这主要是因为你懒得打扰版本控制,如果你在一天内改变了两次就无济于事。此外,仍然需要保存和签入任何数据迁移脚本,因为这不会获取临时SQL,只会获取数据库对象。

答案 5 :(得分:0)

我正在使用Visual Studio数据库版本,它可以将模式从SQL Server导出到Visual Studio项目中。然后将其存储在源代码管理中,并可以根据需要进行部署。 VS数据库项目只是一堆脚本,而且它是一种笨重的工作方式。

更强大的方法是使用数据库迁移框架,如果您正在使用.Net,请查看此博客文章以获得良好的描述http://flux88.com/NETDatabaseMigrationToolRoundup.aspx

更新

正如评论中所提到的,此页面已不复存在。所以这是来自回归机器http://web.archive.org/web/20080828232742/http://flux88.com/NETDatabaseMigrationToolRoundup.aspx

的最后一个已知快照

答案 6 :(得分:0)

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

答案 7 :(得分:0)

我编写了一个DDL触发器,它记录了对SQL对象定义所做的所有更改(触发器,表,SP,视图等)。我可以很好地从触发器调用扩展SP并将细节存储在另一个数据库中并将其用作存储库。 但是如果你的团队真的受到纪律处分,那么任何源代码控制应该可以解决触发器用作审计机制,对于地理位置分散的团队来说非常理想。