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

时间:2012-05-03 16:42:48

标签: visual-studio-2010 database-project

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

到目前为止我看到的所有内容都表明我将.dbschema文件加上vsdbcmd工具及其要求作为MSI的一部分发送,然后在安装过程中启动该工具。

这真的是完成此任务的最简单方法吗?我们正在为最初的beta测试做这个,但到目前为止,它看起来像是一个快速的黑客而不是一个好的长期部署策略。特别是,在安装我们的软件之前,我们不得不在计算机上安装 SQL Server CE 32位和SQL Server CE 64位。我们在MSI中打包所需的每一次尝试都失败了,因为我们错过了来自一个或另一个架构的程序集。

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

我们的最终方法,以及如果我无法想出一些东西,我们最终可能会为生产做的事情,就是根据部署输出手动生成创建和升级脚本,然后在我们的产品中包含一个自定义工具安装程序根据用户交互执行脚本(通过SqlClientsqlcmd或类似的东西),但这似乎正在破坏数据库项目的大部分目的。

是否还有其他方法可以构建和打包VS2010数据库项目以进行自动部署到不同的服务器,这些方法不涉及安装2个版本的SQL CE并使用我们的安装程序运送Visual Studio?

1 个答案:

答案 0 :(得分:1)

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

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

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

SQL CE的安装程序并不大,使其成为MSI的一部分,使事情变得简单,打包在一起并确保您从数据库项目中获得最大的功能。

我回答了类似的问题并链接到相关的MS文章,在这个问题中: Can I do database deployments, without installing Visual Studio or VSTSDB?