将开发数据库表中的列添加到生产数据库表

时间:2013-07-12 07:35:43

标签: sql-server database alter-table

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

我尝试通过Table Tree上的Add Column手动添加列,但是当我尝试保存时,它会显示warning

enter image description here

这是完整的警告信息:

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,过程被取消,是生产中的数据表非常庞大

3 个答案:

答案 0 :(得分:2)

要解决此问题,请转到 工具菜单 ,然后选择 选项 ,然后选择 设计人员 选择 表和数据库设计人员 第一个选项允许您禁用超时,或使其超过默认的30秒。< / p>

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

答案 1 :(得分: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警告)。

答案 2 :(得分:1)

设置超时执行时间有两个选项

1。工具>选项>设计器>之后事务超时

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

但是还有一个选择

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

通常这不是问题,因为默认值为0(无限制) 已经存在,但是请检查它,如果在那里看到不同的值,则将其固定为0。

  

这是完全安全的,并且不会损坏数据。