sql-server – Visual Studio 2010和SQL Server 2008脚本和数据库更新的源代码控制工具?

前端之家收集整理的这篇文章主要介绍了sql-server – Visual Studio 2010和SQL Server 2008脚本和数据库更新的源代码控制工具?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我们目前正在使用Visual Studio 2010和sql Server 2008 R2 – 开发使用(多个)sql Server数据库的Intranet ASP.NET应用程序.

我们已经在源代码控制中存储sql Server的脚本(数据库),与sql Server Management Studio(SSMS)或Visual Studio等任何工具分开存储.也就是说,我们有一个包含表,存储过程等脚本的文本文件的集合;我们在更新它们之前(例如在Management Studio中)直接检查这些进入和退出代码控制并重新检查它们(然后使用SSMS中的脚本来更新数据库).

我们现在想转向采用更综合的方法.

我在StackOverflow中阅读了与sql Server相关的源代码控制的几个问题/答案(其中一些可追溯到几乎是StackOverflow的开头),但是还没有找到任何出色的解决方案.此外,一些条目早于Visual Studio 2010或sql Server 2008或现在可用的一些工具.

我也阅读了关于这个话题的其他文章,例如Troy Hunt的文章(一个例子是:http://www.troyhunt.com/2011/02/automated-database-releases-with.html)和K. Scott Allen的文章(例如:@L_502_1@).

sql Server Management Studio具有“数据库项目”的概念,但这显然是不推荐使用的功能,不推荐用于新开发.

目前我们正在考虑的方法是:

(1)在Visual Studio 2010中创建sql Server 2008数据库项目,并将其连接到源控件(例如TFS或VSS). [此选项可能需要Visual Studio的Premium或Ultimate或Team Database Edition.]

方法将脚本视为“主”,并从该脚本创建/更新数据库以与脚本版本同步.

这种方法的理想特征是:全局搜索,查找/替换,重构,缺少索引或无效引用的项目的警告等.

缺点是:没有用于表和其他项目的GUI设计器,可以容易地丢失数据,同时对列进行一些更改(因为“alter”脚本丢弃列并重新创建它),缺少“format document”命令(在Visual Studio中可用)用于Web项目,但不适用于数据库项目).

(2)在sql Server Management Studio中使用Red-gate sql Source Control(和sql Compare).

方法基本上将数据库视为“主”,并根据数据库设计的更改来更新脚本.在许多方面,这与许多小型开发团队的工作方式更接近.

这种方法的主要优点是您可以使用所有SSMS工具和设计器.

缺点是缺少设计完整性检查,无需查找/替换或全局搜索(不安装其他附件),而使用sql Source Control生成的脚本在语法上与SSMS或Visual Studio本机生成的脚本不同最终结果是一样的).

=====

您是否有替代方法的建议,是否使用/更喜欢将sql Server数据库的源代码控制集成到sql Server Management Studio或Visual Studio 2010中的特定工具或实用程序,以及如何更新/同步开发和生产数据库有变化?

我也看过其他一些软件工具/工具(其中一些已经在其他StackOverflow主题中提到):

sql检查器(尽管它是一个完全独立的工具,但未集成到SSMS或Visual Studio中)

LiquiBase(Apache / Java,还没有.NET)

NeXtep(尚无sql Server支持)

DBSourceTools(尚未集成)

解决方法

我的组织一直在使用两个不同的项目,我已经变得非常偏袒RedGate工具.正如您所提到的,要获得完整的功能,您需要RedGate的整个工具集,但您也可以获得大量的功能(包括重构或全局搜索/替换).为了将DEV同步到TEST / QA / PROD环境,我使用他们的Compare产品来构建脚本集(通常需要进一步审查).我真的不信任任何工具来更新使用中的架构,除非我准备快速恢复它.

相比之下,我发现MS工具过于复杂,这使得它们有些僵化.当我们在数据库中进行一些需要同步到项目中的变化时,我们发现自己在一个泡菜,但项目的变化,不允许在没有数据库变更的情况下构建该项目…最终一个需要大量手动编辑(并导致测试和购买RedGate工具)的整体catch-22场景.

猜你在找的MsSQL相关文章