SQL Server 2008的Visual Studio 2008数据库项目
该项目具有预部署和后部署SQL脚本的占位符。他们工作 - 好吧,大部分时间都是。
该项目有一个Always-Recreate-Database选项:删除现有数据库,每次都创建一个新的热门数据库。
当我部署我的数据库时,整个SQL脚本被放在一起并执行。
我的数据库用于复制,作为部署后脚本的一部分,我将服务器指定为分发,创建复制并向其添加文章。
因此,我必须关闭复制。而这个合理的地方就是预部署。
VS2008很快就擦掉了脸上露出的笑容。如果选中了Always-Recreate-Database,那么它会删除脚本并重新创建数据库,然后放置我的预部署脚本,然后放置其他所有内容。有没有办法让我更改数据库项目的模板,以便在任何部署发生之前执行预部署SQL脚本。
答案 0 :(得分:4)
这可能不完全是您所追求的,但它可以帮助您解决您的问题。经过快速浏览后,我认为部署前和部署脚本的顺序可能难以改变。
据我了解,构建项目中有一些钩子允许您在部署开始之前执行自己的代码。
PreDeployEvent
属性。BeforeDeploy
目标。我认为,这些都应该在正确的时间点执行。
如果使用PreDeployEvent
属性,则需要指定要执行的单个命令行。一个粗略的例子:
<PropertyGroup>
<PreDeployEvent>sqlcmd.exe -i myscript.sql</PreDeployEvent>
</PropertyGroup>
如果您想要更多控制权,请使用BeforeDeploy
目标,这样您就可以运行一个或
更多自定义msbuild任务。这是另一个粗略的例子:
<Target Name="BeforeDeploy">
<Message Text="BeforeDeploy" Importance="high" />
</Target>
顺便说一下,有很多自由可用的自定义任务,例如www.msbuildextensionpack.com的那些。
答案 1 :(得分:2)
还要看一下这篇文章Pre deployment scripts