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

问题描述 投票:1回答:3

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

我尝试通过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,并取消了进程,是的,生产表中的数据是巨大的

sql-server database alter-table
3个回答
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
投票

要解决此问题,请转到“工具”菜单并选择“选项”,然后在“设计器”下选择“表和数据库设计器”,第一个选项允许您禁用超时,或使其大于默认值30秒。

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


1
投票

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

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

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

但还有一个选择

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

通常这不会导致问题,因为默认值已经是0(无限制)但是如果你看到不同的值,请检查并将其修复为0。

它是完全安全的,没有数据损坏的可能性。

© www.soinside.com 2019 - 2024. All rights reserved.