我遇到了问题当开发数据库上的某些表添加了更多列时,我现在应该在生产数据库中添加该列。
我尝试通过Table Tree上的Add Column手动添加列,但是当我尝试保存时,它会显示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
,过程被取消,是生产中的数据表非常庞大
答案 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。
这是完全安全的,并且不会损坏数据。