1

设想:

在我的组织中,我们分别开发多个应用程序。然而,最终,许多应用程序(及其数据库)部署到同一个 SQL 实例,因此它们共享同一个主数据库。

我们使用 Visual Studio 2010 数据库和服务器项目来控制所述数据库的源代码。

为了尝试标准化一些事情,我想做以下事情:

  1. 创建一个“核心”服务器数据库项目,其中包含所有服务器设置、核心登录等。诸如 SET TRUSTWORTHY ON 和服务器级 ANSI 设置等。
  2. 让每个应用程序自己的 Server.dbproj 指定特定于该应用程序的登录名和角色等。
  3. 让每个应用程序自己的 ApplicationDatabase.dbproj 引用 ApplicationX.Server.dbproj

从理论上讲,源代码控制中的每个应用程序将只包含特定于它的项目,而不是在许多项目之间保持服务器相关设置或配置同步。

问题

但是,在实践中,我可以做到这一点:

  1. 完毕。生成我在以后的步骤中引用的 .schema 文件
  2. 完毕。Server.dbproj 愉快地引用 Core.dbschema 并用它自己的登录名和角色等“扩展”它。很高兴在我指向它的任何地方部署它。
  3. 纳达。我添加了从 ApplicationDatabase.dbproj 到 Server.dbproj 的引用(假设 Server 会从 Core 中提取项目),它抱怨任何实际在 Core 中的登录。

因此,我随后将 Server 和 Core 添加为 ApplicationDatabase 的引用,因为它安定下来。编译良好。

但是,当您部署时,您会遇到此处描述的相同问题:http: //social.msdn.microsoft.com/Forums/uk/vstsdb/thread/23cb9132-00d4-42ed-b34c-ab49027cddf7

Error TSD01234: The source model contains 2 server option elements. 
Only one element can be   contained in a model that can be deployed

我认为的问题是 ApplicationDatabase 本质上有两个它知道的服务器项目,因此重复设置。

Microsoft 的文档没有提到在服务器项目中使用部分项目,但也没有将其列为限制。

所以问题是...

有没有人成功地将部分项目用于服务器项目,或者有没有一种方法可以实现相同的目标?

老实说,我不会只是“删除服务器项目”来让问题消失——在我尝试改进之前,我们让它运行得很好!

4

0 回答 0