我目前正在使用Tortoise SVN来对.NET Web应用程序进行源代码控制。将我们的SQL Server存储过程纳入Source Control的最佳方法是什么?我目前使用VS 2010作为开发环境,并使用SQL Server数据工具(SSDT)连接到内部SQL Server 2008 R2数据库。
我过去所做的就是将procs保存到.sql文件,并将此文件置于源代码控制下。我确定必须有比这更有效的方法?我可以在生产计算机上的VS2010,SSDT甚至SQL Server上安装扩展吗?
我目前正在使用Tortoise SVN来对.NET Web应用程序进行源代码控制。将我们的SQL Server存储过程纳入Source Control的最佳方法是什么?我目前使用VS 2010作为开发环境,并使用SQL Server数据工具(SSDT)连接到内部SQL Server 2008 R2数据库。
我过去所做的就是将procs保存到.sql文件,并将此文件置于源代码控制下。我确定必须有比这更有效的方法?我可以在生产计算机上的VS2010,SSDT甚至SQL Server上安装扩展吗?
Answers:
有一些工具,例如Redgate的工具,但是我一直发现最好的办法是将SQL文件保存为您的解决方案中的一个数据库项目(SSDT?)。
同时,我建议以下准则:
if exists then drop
在开始时都具有适当的“ ”您可以最初通过直接从SSMS编写脚本来创建这些SQL文件,并且可以将SSMS设置为对所有“ drop
”和“ create
”以及权限进行脚本编写。
将SQL文件保存在源代码控制中仅提供对SQL文件的控制。它不能控制实际数据库对象的更改,也不能防止多个用户同时更改同一数据库对象(我想您也希望对此进行控制)。我们使用的是第三方工具(ApexSQL版本),它与SSMS和VS集成在一起,您可以选择是使用对象的数据库版本还是源代码控制版本。如果您正在编辑数据库版本,则该数据库版本只会自动签出给您,因此其他任何人都无法编辑它(它不会合并来自不同用户的更改)。仅当您再次签入时,其他人才能对其进行修改。而且您可以将SC版本与活动对象的版本不同(我在白天使用时打算使用该版本,并计划完成编辑并在下一次进行测试)
使用RedGate Source Control将其连接到您的源代码管理。
http://www.red-gate.com/products/sql-development/sql-source-control/
它会将您的SSMS直接挂接到源代码控制存储库,甚至允许检入静态数据。
奇迹般有效
试试Ankhsvn,强烈推荐它免费。
从首页:
AnkhSVN是Microsoft Visual Studio 2005、2008、2010 和2012的Subversion源代码控制提供程序。
AnkhSVN为Visual Studio支持的所有项目类型提供Apache™Subversion®源代码管理支持,并允许您直接从Microsoft Visual Studio IDE内部执行最常见的版本控制操作。
Pending Changes仪表板为您提供了开发过程中的独特见解,并提供了对源代码和问题管理功能的轻松访问。深度源代码控制(SCC)集成使您可以专注于开发,而AnkhSVN可以跟踪所有更改并为您提供有效处理特定需求的工具。
我已经尝试过RedGate和Visual Studio的数据库项目,并且我更喜欢将数据库定义存储在数据库项目中。一旦数据库成为解决方案的一部分,您就可以使用首选的源代码控制提供程序。大多数都具有出色的Visual Studio集成。
使用SSDT工具,您可以获得数据库定义的“最新版本”,从而可以轻松进行模式比较并生成模式升级脚本。
也就是说,模式通常只是等式的一部分。在现实生活中,事实证明,已经有许多数据库。当我的用户松开它时,他们会感到非常失望。
因此,一旦我推出v1.0,就需要维护升级脚本。有时这些只是包含架构更改,但是很多时候我需要根据其他表的内容创建默认值,需要释放特定的约束,直到我为数据添加种子等。通常仅升级架构并不能完全削减它。我的首选是也将这些升级脚本也放在数据库项目的单独文件夹中。这些通常看起来像是“从v1.0升级到v1.1”。
我的数据库始终都有一个引用表,该表可以告诉我当前的版本号,因此我可以阻止不兼容的升级。升级脚本中的第一条语句将检查当前版本,并检查其是否与预期版本不同。
数据库项目的另一个好处是能够基于同一模式部署不同的数据集。我有不同的数据集用于开发,质量检查团队,用户接受测试和自动集成测试。由于一个数据库项目只能有1个部署后脚本,因此这里的技巧是创建一个引用“主”项目的新数据库项目,并使自定义数据集成为该项目的部署后过程的一部分。
这是我的2美分,无论您提出什么要求,最重要的是,它必须适合您和您的团队,并希望在大多数常见任务中为您提供支持。
我最终自己写了一个工具。
可以免费下载-http: //www.gitsql.net
我希望它对希望实现相同最终目标的其他人有所帮助。
本文是描述如何对SQL Server进行源代码控制的文章。http://gitsql.net/documentation-04_SQL_Server_and_GIT
我试图使其尽可能容易。(3个画面)
我也偶然地添加了能够选择性地选择要导入或导出的单个对象的功能。这使得开发过程变得很容易。
我通常会更改存储过程和表,然后将这两个对象导出到GIT目录。
然后,我使用Source Tree直观地查看更改,然后在感到高兴的情况下将其提交到bitbucket中。
我公司刚刚开发了这个新工具(免费),可以帮助您轻松提取 SQL数据库的脚本,进行比较,启动WinMerge以便将脚本与实时数据库进行快速比较,还可以同步更新脚本或应用更改之间的差异。到数据库(表除外,这将涉及更多的复杂性和更多的风险)。
Servantt是WinMerge,用于将SQL Server数据库与版本控制脚本进行比较。
它支持并鼓励软件开发的最佳实践:
(*)脚本保存在本地文件夹中,该文件夹可以是Git,Subversion,TFS,Source Safe或任何其他VCS的工作副本。
免费下载:http : //servantt.com
专业版(仍在开发中)将是完全不同的野兽-它针对部署自动化(版本管理),用于自动化任务,例如更新IIS,更新Windows Services等。