【问题标题】:Add column from development database table to production database table将开发数据库表中的列添加到生产数据库表
【发布时间】:2013-07-10 16:43:02
【问题描述】:

当开发数据库中的某个表添加了更多列时,我遇到了一个问题,现在我应该在生产数据库中添加该列。

我尝试通过在表树上添加列手动添加列,但是当我尝试保存时,它显示warning

这是完整的警告信息:

Saving Definition Changes to tables with large amounts of data could take a 
 considerable amount of time. While changes are being saved, 
 table data will not be accessible.

这样安全吗?还是有其他方法可以做到这一点?

更新:我试图点击Yes,但几分钟后它给了我另一个警告,上面写着Time Out,进程取消了,是的,生产表中的数据非常庞大

【问题讨论】:

  • 如您所见,完整消息不可见,请在此处复制并发布完整消息。
  • @SQL.NETWarrior 抱歉,我已经更新了问题。

标签: sql-server database alter-table


【解决方案1】:

基本上这意味着 SQL 服务器将检查表中的所有记录(在磁盘上)并更改它们。 这是一个需要大量 IO 的操作,并且会将您的表锁定为读/写。

其他需要考虑的是您的数据库超时,如中所述 http://social.msdn.microsoft.com/Forums/sqlserver/en-US/7d46b158-a089-48c9-8153-53c5ed116d37/sql-2005-updating-table-definition-with-large-amounts-of-data-timeout

这是相对安全的(除了锁定问题),并且在您将使用的任何方法中都是如此(可能没有漂亮的 UI 警告)。

【讨论】:

  • 所以很可能会出现锁定问题,我也阅读了您的链接,Alter Table Script works like a charm 是解决方案吗?
  • @SabilValdano - 这两个选项最终都会调用 alter table。另一个(非 UI)选项不会显示警告。如果您的数据不是很大(没有给出数字),两者都会运行得很快。
  • 所以任何方法都会这样做吗?我刚试过yes,但据说Time Out。生产数据绝对庞大,还有其他解决方案吗?
  • 您可以按照帖子中的说明增加超时时间。最后,主要是硬件时代。如前所述,将超时设置为 0 意味着无限超时。
【解决方案2】:

要修复它,请转到 工具菜单 并选择 选项,然后在 Designers 选择 Table and Database Designers 第一个选项允许您禁用超时,或使其大于默认的 30 秒。

参考:http://surf11.com/entry/197/saving-table-times-out-in-sql-server-200

【讨论】:

  • 安全吗?我只是害怕数据会损坏?
  • 据我所知是安全的。我从来没有遇到过任何问题,但就像许多技术一样,这取决于。
【解决方案3】:

设置超时执行时间有两种选择

1. Tools > option > Designers > Transaction timeout after

设置大于 30 秒的值。 (最大 65536)这将解决该问题

但还有一个选择

2。工具 > 选项 > 查询执行 > 执行超时

一般来说这不是问题,因为默认值为 0(无限制) 已经,但如果您在那里看到不同的值,请检查并将其修复为 0。

完全安全,不会损坏数据。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-02-21
    • 1970-01-01
    • 1970-01-01
    • 2014-05-30
    • 1970-01-01
    相关资源
    最近更新 更多