Visual studio 2010 在没有VSDBCMD的情况下部署VS2010数据库项目?

Visual studio 2010 在没有VSDBCMD的情况下部署VS2010数据库项目?,visual-studio-2010,database-project,Visual Studio 2010,Database Project,自从VisualStudio2010的数据库项目首次推出以来,我们一直在为几个内部或单个客户项目使用它们,到目前为止,它们对我们的工作非常有用。现在,我们首次将它们用于一个“盒装”产品,该产品需要打包,以便在任意客户站点安装 到目前为止,我所看到的一切都表明,我将.dbschema文件和vsdbcmd工具及其要求作为MSI的一部分发布,然后作为安装的一部分启动该工具 这真的是完成这项任务的最简单方法吗?我们这样做是为了我们最初的beta测试,但到目前为止,这似乎是一个快速的攻击,而不是一个良好的

自从VisualStudio2010的数据库项目首次推出以来,我们一直在为几个内部或单个客户项目使用它们,到目前为止,它们对我们的工作非常有用。现在,我们首次将它们用于一个“盒装”产品,该产品需要打包,以便在任意客户站点安装

到目前为止,我所看到的一切都表明,我将
.dbschema
文件和
vsdbcmd
工具及其要求作为MSI的一部分发布,然后作为安装的一部分启动该工具

这真的是完成这项任务的最简单方法吗?我们这样做是为了我们最初的beta测试,但到目前为止,这似乎是一个快速的攻击,而不是一个良好的长期部署策略。特别是,在安装软件之前,我们必须在计算机上同时安装SQL Server CE 32位和SQL Server CE 64位。每次尝试将我们需要的东西打包到MSI中都失败了,因为我们缺少一个或另一个体系结构中的程序集

我们研究的另一件事是在构建时“部署”项目时生成的输出
sqlcmd
文件,但这些文件包括内部开发服务器的硬编码服务器名称(它不像数据库名称那样是sqlcmd变量),这意味着我们必须在服务器安装期间编辑.sql脚本。同样,这是可行的,但总的来说,这似乎是个坏主意

我们的最后一种方法,以及如果我不能想出更好的方法,我们可能最终会在生产中做的事情,就是根据部署输出手动生成创建和升级脚本,然后在安装程序中包含一个自定义工具来执行脚本(通过
SqlClient
sqlcmd
或类似的方式)基于用户交互,但这似乎破坏了数据库项目的许多目的


有没有其他方法可以构建和打包VS2010 DB项目,以便自动部署到不同的服务器,而不需要安装两个版本的SQL CE并随安装程序附带一个Visual Studio?

据我所知,您最初的建议可能是最好的

微软似乎从一开始就知道这一点,因为他们推荐并指导如何在构建服务器上安装
vsdbcmd
,而不需要Visual Studio。您可以轻松地将这种想法扩展到在客户站点上安装

虽然您可以提出自己的方法来创建输出文件并对其执行一些后期构建过程,但您只是将复杂性转移到了其他地方,并创建了另一段需要维护的代码

SQL CE的安装程序没有那么大,将其作为MSI的一部分可以使事情变得简单、打包在一起,并确保从数据库项目中获得最大的功能

我回答了一个与此类似的问题,并链接到了一篇相关的微软文章,在这个问题中:

嗨,迈克尔!我的回答有帮助吗?嗯,从某种意义上说,我们已经得出结论,数据库项目不是为外部部署而构建的。没错,SQL CE安装程序没有那么大,但很难向客户的it部门证明为什么我们需要为一个应用程序安装3个版本的SQL。但基本上看起来没有好的方法,所以这是我能得到的最好的答案。