【问题标题】:Is it possible to bring TFS history along when importing database scripts into a database project?将数据库脚本导入数据库项目时是否可以带上 TFS 历史记录?
【发布时间】:2016-01-26 08:30:01
【问题描述】:

我在 TFS 源代码控制下为数据库提供了单独的对象脚本。我想转移到 Visual Studio 数据库项目。将现有脚本导入新项目很容易,但我真的很想将现有脚本与文件一起带来。

这是否可以作为脚本导入过程的一部分或通过 TFS 中的一些后处理来重新映射历史记录?

如果答案随着 TFS 版本的变化而变化,我可能会提出必要的版本。

【问题讨论】:

  • 这些脚本有什么作用,或者您想保留它们的什么?我认为 Ed Eliott 在他的博客上做了一些工作,将脚本拉入 dacpac,但这是否能满足您的需求取决于这些需求是什么。
  • @PeterSchott 这是一个成熟的数据库,脚本中有多年的源代码历史。我想使用数据库项目使构建和部署过程现代化。理想情况下,我将能够维护版本/更改历史记录。
  • 我认为您无法将该项目映射到您的 TFS 历史记录。您可以查看导出历史并将其提交为一个大 blob,或者可以更新对象的 cmets 以指向 TFS 历史以获取更多详细信息。您可能会在幕后使用一些魔法来复制历史,但我不确定那会是什么。您至少应该能够进行某种形式的历史导出,但不确定如何到达那里。

标签: sql-server visual-studio tfs database-project


【解决方案1】:

不,您不可能将 SQL 脚本与 TFS 历史记录一起导入数据库项目。

【讨论】:

    【解决方案2】:

    您可以使用安装了 SQL Server Data Tools 功能的 Visual Studio 2012 或更高版本将现有脚本导入数据库项目。

    VS 支持导入一个或多个 SQL 脚本。您的脚本将被重新解释并从中创建新脚本(每个表、视图、存储过程等一个)。例如,如果您有一个包含 CREATE TABLE 语句的脚本和另一个包含向表添加列的 ALTER TABLE 脚本,它们将组合成一个 CREATE TABLE 语句。

    Some notes from MSDN about importing scripts:

    导入源中尚未存在的所有对象 将添加项目,并且导入源中的所有对象 已存在于项目中将覆盖对象定义 项目。

    注意

    此路径中有两个已知错误将在未来修复 发布:

    • 如果在项目表定义中的 CREATE TABLE 语句之外定义表/列约束,导入将覆盖 表定义,使得约束是内联的。然而,它将 离开线外约束,导致重复约束 在项目中。
    • 源脚本中已存在于项目中的任何主密钥或数据库加密密钥将在导入时复制。消除 复制以构建项目。

    【讨论】:

    • 如果导入的脚本仅作为构建新脚本的源,那么我想历史无法维护。除非 TFS 允许“管理”文件历史记录,否则我可以将其与原始版本历史记录相关联。
    猜你喜欢
    • 2023-03-11
    • 2010-11-08
    • 2017-08-07
    • 1970-01-01
    • 2012-02-10
    • 1970-01-01
    • 2023-01-31
    • 2020-01-25
    • 2019-07-13
    相关资源
    最近更新 更多