在 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 2013:TF25043 一起使用时出错