您如何实际使用 Visual Studio Team System 数据库项目来版本 Sql Server

Posted

技术标签:

【中文标题】您如何实际使用 Visual Studio Team System 数据库项目来版本 Sql Server【英文标题】:How do you actually use Visual Studio Team System database projects to version Sql Server 【发布时间】:2010-02-01 18:44:29 【问题描述】:

您应该如何正确使用 Visual Studio Team System 数据库项目来实现对 sql server 数据库的版本控制?

这可能看起来过于笼统,但到目前为止我在网上找到的所有内容都没有帮助我实现任何有用的东西。我设法找到了与 Redgate 的工具 Sql Compare 中的功能相似的功能,但它绝对不像他们的产品那么直观。

根据我对这些 db 项目应该如何工作的理解,您可以拥有一个存在于 Team Foundation Server(或 sql server 本身)中的数据库版本,您可以将其签出到您的本地机器在它上面工作,然后签入新的更改,这将允许同时开发像编码一样正常工作。我被误导了吗?还是只是一个复杂的设置过程?

然后你如何使用它来将更改部署到登台/生产服务器?

【问题讨论】:

我将让我的赏金到期而无人回答,因为它不会自动选择答案,因为它们都是在添加赏金之前编写的。 【参考方案1】:

我们不使用它,我们只是编写每件事的脚本并将其像任何其他文件一样放入源代码控制中,并且所有对 prod 的部署都只能通过从源代码控制中提取的脚本。我认为真正的关键是除了源代码控制脚本之外,没有任何东西可以放在产品上。一旦开发人员无法以任何其他方式进行更改(开发人员不应拥有 prod 权限),就没有动力不将更改置于源代码控制中。

【讨论】:

我已经看到数据库以这种方式维护,这完全不是我想要的方式,您如何处理需要删除和读取表的更改?每个脚本更改也需要一个 SSIS 包吗? 我们不创建 SSIS 包,只创建 t-sql 脚本。如果表存在,我们所有的表创建脚本都会首先删除表。如果我们不想删除表,我们会编写更改表脚本来运行我们放入 prod 的特定项目,然后进入并修改表创建脚本以包含更改,以防我们需要重新创建。 那些需要一个包含数据的 table drop 的变化呢? 我们不会删除包含数据的表。我们使用alter table 来改变它们。如果您必须在表中有数据时进行需要删除表的更改,那么您可以在脚本中包含代码以执行您需要采取的所有操作来保留数据。 在以这种方式维护数据库的工作对我来说总是一场噩梦。【参考方案2】:

有趣的是你应该问。我是负责将我们的生产数据库置于版本控制之下的人,我们正在使用 Visual Studio Database Edition 来做到这一点。这是一个很棒的工具。这个工具的好处在于,它不仅可以让您的模式处于版本控制之下,而且还可以验证您的数据库模式,并允许您对其进行代码分析。它还允许重构操作和许多其他事情。

通常我们针对本地开发数据库工作,将更改同步回 VSDE,构建数据库以确保没有警告或错误,然后创建部署脚本以部署到我们的生产数据库。

这是对我们执行此操作的内容和方式的简化说明,但我认为它可以让您大致了解如何使用它。我很乐意回答您的任何更具体的问题。

【讨论】:

你的整个中间段落是我知道 VSDEsupposed 要做的,但我错过了你为使其以这种方式工作所做的工作。 您首先在 VS 中创建一个新的数据库项目。然后,您将数据库模式导入到项目中。这是你要找的吗? 初始导入后会发生什么?创建项目后我不知道该怎么做 @Chris,您是否正在寻找类似于 Rails 的数据库版本控制方式?如果是这样,数据库版与它不相似。 我不知道 rails 是怎么做到的?如果你能详细说明,也许这就是我正在寻找的。​​span>

以上是关于您如何实际使用 Visual Studio Team System 数据库项目来版本 Sql Server的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Visual Studio 中实际搜索所有文件

visual studio 2015怎样升级

Visual Studio 2005 关闭缓慢

Visual Studio 2017 错误加载规则集文件

在 Visual Studio 中添加运行时断点如何工作?

Visual Studio 2010 C++:如何判断链接器实际尝试链接的 LIB 文件?