我们正在尝试使用以下开发周期进行新开发的VS2010数据库项目:
当我想从源代码控制中“获取最新信息”时,我接着:
这就是它开始崩溃的地方......因为架构比较试图同步这两个版本,它会尝试撤消我作为我的一部分对本地数据库所做的任何更改自己的功能开发。
显然,您可以告诉架构比较跳过对我修改过的对象的更改,但遗憾的是,这并不总是正常工作:http://connect.microsoft.com/VisualStudio/feedback/details/564026/strange-schema-compare-behavior-sql-2008-database-projects。
基本上,问题存在是因为VSDB项目中的定义不会自动与我的本地数据库同步;因此,每当我做出改变时,我都需要使用Schema Compare来做一个“糟糕的人合并”。
一种可能的解决方案是:
......这远非理想。
RedGate SQL源代码控制在这方面是否更好?
新的'Juneau'SQL工具集怎么样?
答案 0 :(得分:1)
使用“部署”将源更改推送到数据库。从顶行的Build菜单中部署Solution,或者您可以在Solution Explorer中右键单击该项目并选择Deploy。
可以在项目属性中配置部署。
HTH
答案 1 :(得分:0)
由于您提到了其他可能的解决方案,我将详细说明我们的商店如何管理数据结构更改和传播到dev db。
为了跟踪和应用差异,我们编写了一个C#应用程序,它有效地将数据库操作抽象出我们附加到Action列表的类。引擎动态加载表示数据库版本的模块,并将模块中的每个项目添加到要为该版本升级执行的操作列表,然后处理列表。操作包括DataRowInsertAction,TableCreateAction,ColumnModifyAction等。
使用这种方法的一个好处是我们能够将标准.cs文件提交给subversion,用户可以通过查看最新版本并运行它来使自己的开发数据库保持最新状态。另一个巨大的优势是我们可以定位多个数据库引擎,因为Actions本身知道根据所针对的数据库引擎呈现的SQL。
作为旁注,我们使用AdeptSQL来比较数据库,并喜欢它。它将创建一个完整的差异列表,您可以生成一个脚本以指向任一方向(给定数据库'A'和数据库'B',将A升级到B,或将B降级为A.)
对于少量额外费用,它们还提供扩展功能以执行数据差异。
答案 2 :(得分:0)
你的过程是倒退的,这就是为什么这很困难的原因。更改应该从VSDB流向您的数据库,而不是相反。试试这个:
答案 3 :(得分:0)
SQL源代码控制背后的想法基本上是将开发过程转变为它的头 - 而不是使用数据库脚本并将更改推送到数据库,您对数据库进行更改,SQL Source Control计算增量和更新本地脚本,并允许您将更改提交到源控制系统。
SQL Source Control目前仅与SQL Server Management Studio集成,但现在有一个名为SQL Connect的VS软件包可以在VS 2010中使用,其工作方式与SQL Source Control中的方式大致相同。 http://www.red-gate.com/products/sql-development/sql-connect/index-2