如何在服务器项目中使用部分服务器项目?

时间:2012-07-06 05:28:56

标签: visual-studio-2010 database-project

情境:

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

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

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

  1. 创建一个'核心'服务器数据库项目,其中包含所有服务器设置,核心登录等。例如SET TRUSTWORTHY ON和服务器级ANSI设置等。
  2. 让每个应用程序自己的Server.dbproj指定特定于该应用程序的登录名和角色等。
  3. 让每个应用程序自己的ApplicationDatabase.dbproj引用ApplicationX.Server.dbproj
  4. 理论上,源代码管理中的每个应用程序只包含特定于它的项目,而不是在许多项目中保持服务器相关的设置或配置同步。

    问题

    然而,在实践中我可以做到这一点:

    1. 完成。生成我将在以后的步骤中引用的.schema文件
    2. 完成。 Server.dbproj很高兴地引用了Core.dbschema并使用它自己的登录和角色“扩展”它。很高兴在我指向它的任何地方部署它。
    3. Nadda。我将ApplicationDatabase.dbproj中的引用添加到Server.dbproj(假设Server将从Core中提取项目)并且它会抱怨实际在Core中的任何登录。
    4. 所以我在ApplicationDatabase结束时添加了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本质上有两个它知道的服务器项目,因此重复设置。

      Microsofts文档没有提及在Server项目中使用部分项目,但它们都没有列为限制。

      所以问题是......

      是否有人成功地为服务器项目使用了部分项目,还是有一种方法可以看到实现同样的目的?

      我会诚实地说,我不会只是“删除服务器项目”以使问题消失 - 我们一直努力工作直到我试图改进它们!

0 个答案:

没有答案