Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/visual-studio-2010/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Visual studio 2010 VS2010数据库项目部署,在是否可能发生数据丢失时失败?_Visual Studio 2010_Sql Server 2008_Database Project - Fatal编程技术网

Visual studio 2010 VS2010数据库项目部署,在是否可能发生数据丢失时失败?

Visual studio 2010 VS2010数据库项目部署,在是否可能发生数据丢失时失败?,visual-studio-2010,sql-server-2008,database-project,Visual Studio 2010,Sql Server 2008,Database Project,我有一个web应用程序的数据库项目,目前我已将其配置为在部署期间可能发生数据丢失时失败。这样我觉得更安全。然而,我遇到了一个问题。实际上,我需要在一些我对可能的数据丢失没有意见的事情上部署更改,例如,缩短列长度,实际上不会删除任何内容,但系统认为会删除 我有两个问题 第一个问题是:除了启用或禁用catch-all-go或no-go之外,还有什么方法可以对这个过程进行更精细的控制,即指定可以删除或缩短的列?有没有办法对这个过程进行更精细的控制 第二个问题是,你们是如何处理这些情况的?起初,我希望添

我有一个web应用程序的数据库项目,目前我已将其配置为在部署期间可能发生数据丢失时失败。这样我觉得更安全。然而,我遇到了一个问题。实际上,我需要在一些我对可能的数据丢失没有意见的事情上部署更改,例如,缩短列长度,实际上不会删除任何内容,但系统认为会删除

我有两个问题

第一个问题是:除了启用或禁用catch-all-go或no-go之外,还有什么方法可以对这个过程进行更精细的控制,即指定可以删除或缩短的列?有没有办法对这个过程进行更精细的控制

第二个问题是,你们是如何处理这些情况的?起初,我希望添加一个部署前脚本来删除列就足够了,但是它似乎也可以捕获这些文件中的删除等内容

  • 不,不幸的是,没有任何方法可以更精确地控制它
  • 当我知道我将部署会导致数据丢失但这正是我想要的东西时,我会禁用它。之后我重新启用它。此外,我总是会检查部署到生产环境时出现的更改脚本

  • 只需将预部署脚本中的列更新为截断长度

    要将我的列截断为20:

    UPDATE mycol = LEFT(mycol, 20)
    FROM mytable
    WHERE mycol != LEFT(mycol, 20)
    

    Microsoft指南是在部署前将数据移出到临时表中,让部署引擎运行检查以查看该表是否包含行(这将通过,因为它现在为空),并升级架构,然后在部署后脚本中将数据移回

    有关更多信息,请参阅巴克莱山关于该主题的帖子:


    这种方法可能存在的问题是,架构比较在预部署脚本之前运行,因此,如果表中包含行,则发布脚本可能仍然包含一个check和raiserror。这并不是部署引擎解析预部署脚本和“捕获和删除”,问题在于,架构比较在预部署脚本之前运行,因此生成的部署脚本包含一个检查错误(如果表包含行)。如果打开生成的SQL脚本,可以看到这一点。如何禁用它?