gpt4 book ai didi

sql - 数据库项目中的预部署

转载 作者:行者123 更新时间:2023-12-04 13:19:18 26 4
gpt4 key购买 nike

适用于 SQL Server 2008 的 Visual Studio 2008 数据库项目

该项目具有预部署和部署后 SQL 脚本的占位符。他们工作 - 好吧,大部分时间反正。

该项目有一个 Always-Recreate-Database 选项:删除现有数据库并每次创建一个新的 hot-from-the-oven 数据库。

当我部署我的数据库时,整个 SQL 脚本被放在一起并执行。

我的数据库用于复制,并且作为部署后脚本的一部分,我将服务器指定为分发,创建复制并向其中添加文章。

因此,我必须关闭复制。把它放在预部署中是合乎逻辑的。

VS2008 很快就抹去了我脸上得意的笑容。如果选中 Always-Recreate-Database,则它会放置脚本以删除并重新创建数据库,然后放置我的 Pre-Deployment 脚本,然后是其他所有内容。

我有什么方法可以更改数据库项目的模板,以便在任何部署发生之前执行预部署 SQL 脚本。

最佳答案

这可能不是您所追求的,但它可能会帮助您解决问题。快速浏览后,我认为部署前和部署后脚本的顺序可能很难更改。

据我了解,构建项目中有一些钩子(Hook)可以让您在部署开始之前执行自己的代码。

  • 定义一个 PreDeployEvent .dbproj 文件中的属性。
  • 定义一个 BeforeDeploy .dbproj 文件中的目标。

  • 我认为,其中任何一个都应该在正确的时间点执行。

    如果您使用 PreDeployEvent属性,您需要指定要执行的单个命令行。一个粗略的例子:
    <PropertyGroup>
    <PreDeployEvent>sqlcmd.exe -i myscript.sql</PreDeployEvent>
    </PropertyGroup>

    如果您想要更多控制权,请使用 BeforeDeploy目标,这将允许您运行一个或
    更多自定义 msbuild 任务。这是另一个粗略的例子:
    <Target Name="BeforeDeploy">
    <Message Text="BeforeDeploy" Importance="high" />
    </Target>

    顺便说一句,有很多免费的自定义任务可用,例如 www.msbuildextensionpack.com 上的任务。 .

    关于sql - 数据库项目中的预部署,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1229054/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com