6

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

我有 2 个问题。

第一个是:除了启用或禁用捕获全部执行或不执行之外,有没有办法对此过程进行更精细的控制,即指定可以删除或缩短的列?有什么方法可以更精细地控制这个过程?

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

4

3 回答 3

2
  1. 不,不幸的是,没有任何方法可以更精细地控制它。
  2. 当我知道我将部署会导致数据丢失但正是我想要的东西时,我禁用它。然后我重新启用它。此外,我总是会检查部署到生产环境时出现的更改脚本。
于 2011-04-22T15:19:53.667 回答
0

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

有关更多信息,请参阅 Barclay Hills 关于该主题的帖子:

于 2013-02-27T17:34:08.217 回答
0

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

例如:将我的 col 截断为 20:

UPDATE mycol = LEFT(mycol, 20)
FROM mytable
WHERE mycol != LEFT(mycol, 20)
于 2011-05-10T11:46:43.160 回答