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

时间:2011-11-17 15:57:56

标签: tfs database-project

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

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

我的数据库(数据库本身)具有与Warehouse数据库的链接服务器连接。 Warehouse数据库项目存储在单独的Team Project Collection中。

有没有办法在我的项目中添加Warehouse项目作为参考?

1 个答案:

答案 0 :(得分: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的引用&amp;使用您在上一步中创建的参考变量的视图(不确定这是否必要......)
  7. 现在ABC到XYZ的引用应该解决。
  8. 创建一个新的数据库项目(这可以是一个临时的,丢弃的项目)
  9. 让它从仓库中提取定义(右键单击项目并选择“从数据库导入”)
  10. 构建项目
  11. 将Warehouse.dbschema文件从构建输出复制到ABC项目
  12. 在项目ABC中,右键单击“数据库引用”并添加对Warehouse.dbschema文件的引用
  13. 为仓库
  14. 创建参考变量
  15. 使用参考变量
  16. 替换对Warehouse的引用
  17. 现在ABC中对仓库的引用应该解决。
  18. 我不知道它是否会像那样起作用,但这就是理论。希望它有所帮助...