在 TFS 2010 中的团队项目集合之间共享数据库项目

Posted

技术标签:

【中文标题】在 TFS 2010 中的团队项目集合之间共享数据库项目【英文标题】:Share database Projects between Team Project Collections in 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 项目作为参考?

【问题讨论】:

【参考方案1】:

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

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

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

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

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

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

我会尽力举例……

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

解决方案

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

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

【讨论】:

以上是关于在 TFS 2010 中的团队项目集合之间共享数据库项目的主要内容,如果未能解决你的问题,请参考以下文章

TFS 2010 到 TFS 2013 升级错误

删除 TFS 2010 中的分支关系

TFS 2010 权限。所有用户都有权

将现有共享点安装配置为与 tfs 2013:TF25043 一起使用时出错

在 VS2010 和 TFS 中管理团队的 web.config

应用 TFSConfig 修复命令后还原 TFS 2010 集合的所有安全组