Sql server Visual Studio 2010和SQL Server 2008脚本和数据库更新的源代码管理工具?

Sql server Visual Studio 2010和SQL Server 2008脚本和数据库更新的源代码管理工具?,sql-server,visual-studio,version-control,Sql Server,Visual Studio,Version Control,我们目前正在使用Visual Studio 2010和SQL Server 2008 R2—开发使用(多个)SQL Server数据库的intranet ASP.NET应用程序 我们一直在源代码管理中存储SQL Server的脚本(用于数据库),与SQL Server Management Studio(SSMS)或Visual Studio等工具分开。也就是说,我们有一个文本文件集合,其中包含用于表、存储过程等的脚本;在更新它们(比如在ManagementStudio中)和将它们检入(然后使用

我们目前正在使用Visual Studio 2010和SQL Server 2008 R2—开发使用(多个)SQL Server数据库的intranet ASP.NET应用程序

我们一直在源代码管理中存储SQL Server的脚本(用于数据库),与SQL Server Management Studio(SSMS)或Visual Studio等工具分开。也就是说,我们有一个文本文件集合,其中包含用于表、存储过程等的脚本;在更新它们(比如在ManagementStudio中)和将它们检入(然后使用SSMS中的脚本更新数据库)之前,我们直接将它们检入和检出源代码管理

我们现在希望采取更为综合的办法

我已经阅读了StackOverflow中有关SQL Server的源代码管理的几个问题/答案(其中一些问题/答案可以追溯到StackOverflow的开始),但还没有找到任何优秀的解决方案。此外,有些条目的日期早于Visual Studio 2010或SQL Server 2008或现在可用的某些工具

我也读过关于这个话题的其他文章,比如特洛伊·亨特的文章(一个例子是:)和K·斯科特·艾伦的文章(例如:)

SQLServerManagementStudio有“数据库项目”的概念,但这显然是一个不推荐使用的功能,不建议用于新的开发

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

(1) 在Visual Studio 2010中创建SQL Server 2008数据库项目,并将其连接到源代码管理(例如,TFS或VSS)。[此选项可能需要Visual Studio的高级版、终极版或团队数据库版。]

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

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

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

(2) 在SQLServerManagementStudio中使用红门SQL源代码管理(和SQL比较)

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

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

缺点是设计完整性检查较少,没有查找/替换或全局搜索(不安装其他加载项),并且使用SQL源代码管理生成的脚本在语法上与SSMS或Visual Studio本机生成的脚本不同(最终结果相同)

=====

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

我还研究了其他一些用于此目的的软件实用程序/工具(其中一些已在其他StackOverflow主题中提到):

SQL检查器(一种可能性,尽管它是一个完全独立的工具;未集成到SSMS或Visual Studio中)

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

下一步(尚不支持SQL Server)


DBSourceTools(还不够集成)

您没有将源代码管理集成到数据库中

它不是基于文件的。您的数据库由表、代码、数据、索引、统计信息、安全性等组成:这些都存在于系统表中

而不是复制+粘贴,请参阅我以前的答案


我们遵循Martin Fowler的或多或少的

我的组织已经在两个不同的项目中使用了这两个工具,我已经非常偏爱RedGate工具。正如您提到的,要获得完整的功能,您需要从RedGate获得整个工具集,但您也可以从中获得很多额外功能(包括重构或全局搜索/替换)。为了将DEV同步到TEST/QA/PROD环境,我使用它们的比较产品构建脚本集(通常需要进一步检查)。我真的不信任任何工具来更新正在使用的模式,除非我准备快速恢复它


相比之下,我发现MS工具过于复杂,这使得它们有些不灵活。当我们在数据库中有一些需要与项目同步的更改时,我们发现自己陷入了困境,但是项目中的更改不允许在没有数据库更改的情况下构建它。。。它最终是在一个需要大量手工编辑(并导致测试和购买RealGATE工具)的整个Cas22脚本中。

一个额外的因素或标准,您可能需要考虑的是,您和您的团队最容易编写脚本、存储过程等。

我们在过去评估了VisualStudioTeamDatabaseEdition(或者现在称之为什么),得出了一个不幸的结论:我们只是不喜欢在VisualStudio中编写SQL。作为一个使用SSM编写SQL的团队,我们的工作效率要高得多。当然,你可能会发现事实恰恰相反

我们也在评估红门的SQL源代码控制工具。对我们来说,最大的好处是它在SSM内工作,并且相对无摩擦。不管出于什么原因,他们的模型更适合我们进行SQL开发工作的方式

关于部署,双方