【问题标题】:Share database Projects between Team Project Collections in TFS 2010在 TFS 2010 中的团队项目集合之间共享数据库项目
【发布时间】:2011-11-17 15:57:56
【问题描述】:

我有一个数据库项目,它在几个视图和存储过程中使用链接服务器。

根据 Microsoft 的说法,Visual Studio 2010 数据库项目不明确支持链接服务器,但您可以使用 References 和 SQLCMD 变量来破解它: http://msdn.microsoft.com/en-us/library/bb386242.aspx

我的数据库(数据库本身)有一个连接到 Warehouse 数据库的链接服务器。 Warehouse 数据库项目存储在单独的团队项目集合中。

有什么方法可以在我的项目中添加 Warehouse 项目作为参考?

【问题讨论】:

    标签: tfs database-project


    【解决方案1】:

    以下文章介绍了如何在数据库项目中使用引用变量。 http://msdn.microsoft.com/en-us/library/bb386242.aspx

    当您引用不在同一解决方案中的数据库时,这是必要的(参见第一张图表,第二行)。

    就我而言,我可能会为每个不同的业务环境(内部应用程序、外部应用程序、仓库等)提供单独的解决方案。这些解决方案中的每一个都将具有多个数据库。但是数据库需要引用不在同一个解决方案中的数据库(例如,内部数据库可能具有从外部数据库提取数据的存储过程)。

    在这种情况下,我认为最好的解决方案是参考构建项目时生成的 .dbschema 文件。您可以为每个项目配置每晚构建,并将构建输出复制到特定的共享驱动器位置。然后,您可以通过将数据库引用(在上述文章中描述)添加到数据库的 .dbschema(在共享驱动器上),将任何数据库项目指向任何其他数据库的架构。

    如果您想让它更复杂,您可以修改构建模板以将必要的 .dbschema 文件从构建输出复制到每个项目并签入。

    如果数据库没有项目并且没有被主动更改,则需要为数据库创建一个临时数据库项目,以便您可以构建一个 .dbschema 文件。然后可以将构建的 .dbschema 文件签入到依赖项目中,除非它发生更改,否则您无需再次生成它。

    我会尽力举例……

    问题: 项目 ABC 依赖于数据仓库和项目 XYZ。项目 XYZ 处于不同解决方案下的源代码控制中,但仓库不在源代码控制中。

    解决方案

    1. 为项目 XYZ 创建一个夜间构建
    2. 将构建输出目录配置到共享驱动器
    3. 为项目 ABC 创建自定义构建模板,将 XYZ.dbschema 文件复制到 ABC 项目并签入
    4. 在项目 ABC 中,右键单击“数据库引用”并添加对 XYZ 的引用,指定 XYZ.dbschema 文件(而不是解决方案之外的 XYZ 数据库项目)
    5. 为 XYZ 项目创建引用变量(不确定是否有必要……)
    6. 将存储过程和视图中对 XYZ 的引用替换为您在上一步中创建的引用变量(不确定是否有必要……)
    7. 现在应该解析 ABC 中对 XYZ 的引用。
    8. 创建一个新的数据库项目(这可以是一个临时的、一次性的项目)
    9. 让它从仓库中提取定义(右键单击项目并选择“从数据库导入”)
    10. 构建项目
    11. 将 Warehouse.dbschema 文件从构建输出复制到 ABC 项目中
    12. 在项目 ABC 中,右键单击“数据库引用”并添加对 Warehouse.dbschema 文件的引用
    13. 为仓库创建参考变量
    14. 用引用变量替换对仓库的引用
    15. 现在应该解析 ABC 中对仓库的引用。

    我不知道它是否会像那样工作,但这就是理论。希望对您有所帮助……

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-05-30
      • 2011-10-15
      • 2013-02-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多