Pre-Deployment in Database project
用于SQL Server 2008的Visual Studio 2008数据库项目
该项目具有用于部署前和部署后SQL脚本的占位符。它们可以正常工作-不管怎么说,在大多数情况下都是如此。
该项目有一个"始终重新创建数据库"选项:删除现有数据库并每次创建一个新鲜的烤箱内热数据库。
部署数据库时,将整个SQL脚本放在一起并执行。
我的数据库用于复制,并且作为部署后脚本的一部分,我将服务器指定为分发服务器,创建复制并向其中添加文章。
因此,我必须关闭复制。而将其放置在预部署中则是合乎逻辑的。
VS2008很快擦掉了我脸上自鸣得意的笑容。如果选中了Always-Recreate-Database,则它将放置脚本并重新创建数据库,然后放置我的Pre-Deployment脚本,然后放置其他所有内容。
我有什么办法可以更改数据库项目的模板,以便在任何部署发生之前在要执行的位置执行预部署SQL脚本。
这可能不完全是您想要的,但它可能有助于您解决问题。快速浏览后,我认为部署前和部署后脚本的顺序可能很难更改。
据我了解,构建项目中有一些挂钩可以让您在部署开始之前执行自己的代码。
我认为其中任何一个都应该在正确的时间执行。
如果使用
1 2 3 | <PropertyGroup> <PreDeployEvent>sqlcmd.exe -i myscript.sql</PreDeployEvent> </PropertyGroup> |
如果需要更多控制,请使用
更多自定义msbuild任务。这是另一个粗略的示例:
1 2 3 | <Target Name="BeforeDeploy"> <Message Text="BeforeDeploy" Importance="high" /> </Target> |
顺便说一句,有许多免费的自定义任务可用,例如www.msbuildextensionpack.com上的那些任务。