【问题标题】:What is incremental database publishing?什么是增量数据库发布?
【发布时间】:2014-10-05 22:02:46
【问题描述】:

当我在 Visual Studio 中使用 Web 部署发布我的网站时,我看到如下内容:

MySql.Data.MySqlClient is not supported for incremental database publishing. 

我想知道如果这项技术得到支持,它到底能做什么?

【问题讨论】:

    标签: visual-studio publish web-publishing


    【解决方案1】:

    增量数据库发布是一种部署功能,其中将架构(新版本)的源代码与实时数据库架构(当前版本)进行比较,以创建更改脚本以将当前版本升级到新版本。

    例如,如果您的架构有一个包含几列的表,并且您在源代码中添加了一个新的列定义,那么在发布时会创建一个脚本来将新列添加到表中。

    不支持除 SQL Server 之外的数据库引擎并不奇怪,因为支持其他数据库引擎将是大量工作。它真正意味着您必须自己同步数据库更改。 MySQL 可能会提供工具来帮助解决这个问题,但 Visual Studio 没有。

    【讨论】:

    • 所以它只是更新的模式,而不是内容。我假设它从 web.config 中的连接字符串设置中找到旧/新版本的数据库,对吗?有没有办法阻止它这样做?
    • @Steve:如果源代码控制脚本包含任何内容,它只会更新内容。一个常见的例子是在源代码的部署后脚本中使用MERGE 语句来维护查找表。如果您要跟踪的只是模式,那么将更新的只是模式。至于它从何处获取连接字符串等细节,这将取决于您如何跟踪更改。数据库项目? EF 代码优先模型?还有什么?如果是数据库项目,项目属性中可能有设置。
    • 它是一个 MVC 网站项目。不包括数据库。我确实有几个 .sql 文件。它会扫描它吗?我只是想确保它不会通过从我的本地测试数据中注入一堆垃圾来破坏我的生产数据库
    • @Steve:我不确定具体细节,我一直在数据库项目中跟踪数据库模式/数据。尽管仍然值得查看项目属性等,但那里可能有一些部署设置。当然,如果该功能不受支持,那么它不应该做任何事情。真正确定的一种方法是不允许从部署的用户上下文访问生产数据库。
    • 我怎么能不允许从部署的用户上下文访问生产数据库?
    【解决方案2】:

    增量数据库发布用于版本控制。 SVN 无法真正处理 tfs 支持的数据库模式的版本控制。

    如果您使用增量数据库发布,您可以设置为保留当前数据库并仅进行更新,或者始终重新创建数据库。

    假设您要声明 sql 变量,如 InitData、SeedData。

    您可以这样做,并且您可以访问一些之前和发布后的脚本。如果您的变量 SeedData 为 true,您可以在发布后脚本中播种一些数据。

    更多信息在这里:http://www.asp.net/web-forms/tutorials/deployment/web-deployment-in-the-enterprise/deploying-database-projects

    编辑:如果您在发布时选择不重新创建数据库,那么它只是更新的架构

    【讨论】:

    • 只适用于数据库项目吧?我假设其他的,比如图书馆/网站不在考虑范围内
    • 是的,仅用于数据库项目。
    猜你喜欢
    • 2018-05-19
    • 1970-01-01
    • 2021-11-22
    • 2011-08-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-03
    • 2023-04-02
    相关资源
    最近更新 更多