自定义Visual Studio 2010数据库项目的部署脚本

时间:2012-01-09 02:33:05

标签: visual-studio-2010 msbuild-task

Visual Studio 2010数据库项目生成的部署脚本对我不起作用。我需要将它们包含在MSI中,这些MSI将被发送给许多不同的客户以升级和创建新数据库。

查看Microsoft.Data.Schema ...命名空间我看到了许多可能性来自定义部署脚本,DeploymentScriptGenerator,ExtensionManager等的生成。它看起来真的像是可扩展的并且支持任何数据库

我找不到任何类型的“入门”文档或示例。有没有人做过这样的事情?

1 个答案:

答案 0 :(得分:0)

Visual Studio Data Projects使用两个部署阶段。

通过构建数据库项目创建的部署文件实际上只是一个元数据包,它描述了数据库所需的最终状态,但不知道将在何处部署或者是否是新数据库或现有数据库数据库。

第二部分实际上是针对特定数据库(现有数据库或新数据库)执行部署包。为此,Visual Studio必须针对数据库和部署包运行差异,并确定需要应用哪些更改,并生成应用这些更改所需的脚本。

所以你遇到的问题是,如果你在MSI中包含第一部分,你需要在最终用户的机器上运行一些东西,将这些变化应用到现场的未知数量的未知数据库,你不能真的是他们的Visual Studio。

幸运的是,MS也包含一个命令行(VSDBCMD.exe),它允许您获取该单个部署包并使用它将更改应用于任何数据库。此工具将执行与Visual Studio相同的差异,并生成创建/升级该数据库所需的SQL脚本(任何实际运行脚本,如果您这样选择,基于命令行parmae​​ters)。有关如何从命令行调用它的信息,请参阅http://msdn.microsoft.com/en-us/library/dd193283.aspx

所以我看到你将这个命令行工具与你的应用程序一起发送(只需确保仔细检查再分发许可证以确保这是正常的)并在执行的MSI(或其他一些实用程序)中执行自定义操作它应用数据库更改。还要检查命令行工具的依赖关系,我知道它需要SQL SMO对象,SQL Native Client以及其他一些东西。您需要确保MSI包含那些作为先决条件。