以下文章介绍了如何在数据库项目中使用引用变量。
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 中对仓库的引用。
我不知道它是否会像那样工作,但这就是理论。希望对您有所帮助……