Visual Studio中的'SQL Server 2008 Server Project'与'Sql Server 2008 Database project'有何区别?

11
我找不到一个简单的解释来了解它们之间的区别,以便确定要使用哪个。
其中一个是用于服务器,另一个是用于数据库?我不确定这意味着什么。
基本上,我们正在做一个新的 Web 应用程序,我想看看这些项目类型在跟踪数据库代码/模式等方面能为我提供什么帮助。

为什么不创建两个项目并对它们进行比较呢? - John MacIntyre
2个回答

14

SQL Server 2008项目: 该项目用于创建SQL-CLR模块,例如在C#(或VB.NET)中创建存储过程、函数、聚合等,这些代码将在SQL Server内部运行。

在创建此类项目时,单击“解决方案资源管理器”中的“添加新项”,您可以选择创建存储过程、触发器、聚合、用户定义的函数、用户定义的类型或帮助类。所有这些内容都将编译为.NET程序集,并在SQL Server上部署并在SQL-CLR运行时环境内执行。

SQL Server数据库项目: 这只是一组用于对数据库进行创建和操作的SQL脚本。

在SQL Server数据库项目中,您基本上只能添加SQL脚本--.sql文件。实际上除此之外就没有其他选项了。因此,与SQL Server 2008项目类型相比确实非常不同!


那么对我来说,我只对SQL Server数据库项目感兴趣?因为我只想要一种将表模式/存储过程放入源代码控制的方法。而且我希望能够在各个服务器之间推送更改(使用DB项目是否有帮助?)我看了两者之间的区别...看起来唯一的区别是“服务器级对象”文件夹...而且两者的项目属性似乎是相同的...所以...服务器项目似乎只是带有一些额外空文件夹的DB项目? - punkouter

5
这里的答案似乎并没有真正回答发布的问题。 "SQL Server 2008 Server Project"和"SQL Server 2008 Database Project"都是在Visual Studio 2008 Database Edition中存在的东西,但不幸的是,虽然没有一个名为"SQL Server 2008 Project"的项目类型,但有一个名为"SQL Server Project"的项目类型与描述相匹配。此外,在Visual Studio 2008 Team Suite中已经没有名为"SQL Server Database Project"的项目类型了(至少我没有找到),尽管上面给出的描述似乎描述了早期在VS中可用的旧版数据库项目。

经过进一步思考,我猜测marc_s没有安装Database Edition(也称为Data Dude或DBPro)。如果我错了,请纠正我。

Sql Server 2008 Database Projects和Sql Server 2008 Server Projects似乎基本上做同样的事情。我希望Server Projects用于安装、配置和更改管理Sql Server实例,而Database Projects用于其中的单个数据库...但事实并非如此。是否有人能够确定它们之间的区别?

玩了一会儿之后,我唯一能发现的区别是,无论您在创建项目时导入了什么类型的数据库(master还是其他),Sql Server 2008 Server Projects始终会部署到您部署到的服务器上的master数据库中。因此,在这种情况下,Database Projects用于您的业务数据库,而Server Projects专门用于托管业务数据库的服务器上的master数据库。

编辑:在更加努力地搜寻VS2008文档之后,我找到了这个规范:

"部署服务器项目 数据库项目可以包含数据库对象、服务器对象或两者的定义。在大多数环境中,开发人员可以更改数据库对象,但只有数据库管理员可以更改服务器对象。您可以通过将服务器对象放入单独的项目(称为服务器项目)中来强制执行此限制。然后,您可以限制版本控制,以便仅您的管理员可以更改服务器项目。在分期或生产环境中,服务器项目及其对象通常会与包含数据库对象的项目分开部署。

您可以使用与部署架构项目相同的过程来部署服务器项目。"

http://msdn.microsoft.com/en-us/library/dd193413.aspx


但我不明白的是服务器项目真正有什么现实世界的用处...经过我的研究,我发现数据库项目似乎是我们所需要的全部内容...只是一种版本控制我们的 SQL 代码的方式...与服务器项目相关的其他方面,我不明白它在小型应用程序中如何实际应用...? - punkouter
我同意——据我所知,引入服务器项目只会让用户感到困惑。实际上,它本可以是数据库项目上的一个简单标志,将其限制为针对主数据库进行部署。 - bwerks
1
服务器项目用于创建登录等,供您的数据库项目使用。也就是说,它包含了服务器级别的对象。数据库项目则用于创建表格等内容。 - Josh M.
同意!我已经学到了这一点,但我从未回来更新问题。 - bwerks
+1 我在谷歌上搜索了两个项目模板之间的解释,你给了我一个非常充分的答案。 - Peter

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接