版本控制T-SQL的最佳方法?
Possible Duplicate: Stored procedures/DB schema in source control
对表,视图,存储库等进行版本控制的最佳方法是什么?最好是自动化的或者至少是半自动化的:)
谢谢
解决方案
回答
为所有数据库更改编写迁移脚本,并将其保存在存储库中。强制执行仅通过运行脚本对数据库进行所有更改的策略;这样就可以记录已完成的操作,并可以将其还原。研究是否存在适用于我们喜欢的语言/数据库组合的迁移框架。
回答
我昨天问了这个,得到了一些不错的答复:
源代码管理中的存储过程/数据库模式
回答
我使用Visual Studio 2008 Pro创建数据库项目(其他项目类型->数据库)。我们已经使用SVN作为代码存储库,因此具有一堆代表存储过程的.sql文件的项目只是放入存储库中的另一件事,我们可以看到diff / history等。这与VSS或者任何其他存储库相同你用。
数据库项目的好处是项目将记住连接字符串,而我们要做的就是右键单击.sql文件(或者一次选择所有这些!),然后选择运行以在数据库中更新它。这样就可以轻松地从存储库更新.sql文件并全部运行它们以更新所有存储过程,从而验证数据库在几秒钟内即可更新。
我们还可以选择创建LINQ项目(Visual C->数据库),并将所有LINQ代码存储在存储库中。
希望对我们有所帮助!
回答
K Scott Allen的文章说了这一切:
http://odetocode.com/Blogs/scott/archive/2008/01/31/11710.aspx
回答
如果我们非常懒惰,则可以使用SMO(SQL Server管理对象),或者如果使用2005之前的SQL Server,则可以每天使用DMO(分布式管理对象)编写所有表/视图/存储过程的脚本,然后将脚本与脚本进行比较在源代码管理中,如果有任何更改,请签入新版本。我们将无法像在脚本中创建所有数据库更改一样拥有漂亮的脚本,但至少可以重新创建所有表/存储的程序/意见。例如,在我的表创建脚本中经常有注释。
这是一篇使我们开始使用脚本的文章:http://www.sqlteam.com/article/scripting-database-objects-using-smo-updated。
同样,这主要是因为我们太懒于打扰版本控制,并且如果我们在一天内更改两次则无济于事。同样,仍然必须保存并签入任何数据迁移脚本,因为这不会采用临时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