一个已有较大数据的表,修改数据库结构问题

时间:2021-11-07 07:20:53
SQL Server 2005
有一个表,目前已有数据600多万条
现在需要对该表数据结构进行调整,但在保存修改时候提示“将定义更改保存到包含大量数据的表中可能需要很长时间,在保存更改期间,将无法访问表数据。”如果我点是的话,半分钟后会提示超时,但这个数据库已在应用,也不能把超时时间设置太长,请问怎么办呢?

7 个解决方案

#1


用分區表處理大數據表

#2


分区表也不能解决数据结构的修改超时问题吧,其实我只是增加字段。

#3


引用楼主 freeland2008 的帖子:
SQL Server 2005 
有一个表,目前已有数据600多万条 
现在需要对该表数据结构进行调整,但在保存修改时候提示“将定义更改保存到包含大量数据的表中可能需要很长时间,在保存更改期间,将无法访问表数据。”如果我点是的话,半分钟后会提示超时,但这个数据库已在应用,也不能把超时时间设置太长,请问怎么办呢?

对要改的字段,新建立一个新字段,然后通过转换到new fields中去.然后删除原来的字段.

如果需要改为原来的名字,再次重建原字段,注意类型.

再把数据传回去,然后再删除new fields

#4


引用 2 楼 freeland2008 的回复:
分区表也不能解决数据结构的修改超时问题吧,其实我只是增加字段。

如果是增加字段,就增加一个可以为空的字段,建立后,更改值.然后看你的需要是否改为该字段不为空.

#5


引用 4 楼 dawugui 的回复:
引用 2 楼 freeland2008 的回复:
分区表也不能解决数据结构的修改超时问题吧,其实我只是增加字段。

如果是增加字段,就增加一个可以为空的字段,建立后,更改值.然后看你的需要是否改为该字段不为空.


我不需要对以前的字段做修改,现在就是要增加几个字段,而且设置也是可以为空的。如果不设置为空肯定是加不上去的。

#6


加列的话不要用sqlserver管理工具去加,工具加的时候是重建表然后回填数据的,啰嗦
直接alter table table_name add col_name varchar(aaa)这样就行了,很快的
要注意的就是有没有涉及复制,还有如果要回填数据的时候怎么做

#7


楼上正解,使用ALTER TABLE进行修改表。

#1


用分區表處理大數據表

#2


分区表也不能解决数据结构的修改超时问题吧,其实我只是增加字段。

#3


引用楼主 freeland2008 的帖子:
SQL Server 2005 
有一个表,目前已有数据600多万条 
现在需要对该表数据结构进行调整,但在保存修改时候提示“将定义更改保存到包含大量数据的表中可能需要很长时间,在保存更改期间,将无法访问表数据。”如果我点是的话,半分钟后会提示超时,但这个数据库已在应用,也不能把超时时间设置太长,请问怎么办呢?

对要改的字段,新建立一个新字段,然后通过转换到new fields中去.然后删除原来的字段.

如果需要改为原来的名字,再次重建原字段,注意类型.

再把数据传回去,然后再删除new fields

#4


引用 2 楼 freeland2008 的回复:
分区表也不能解决数据结构的修改超时问题吧,其实我只是增加字段。

如果是增加字段,就增加一个可以为空的字段,建立后,更改值.然后看你的需要是否改为该字段不为空.

#5


引用 4 楼 dawugui 的回复:
引用 2 楼 freeland2008 的回复:
分区表也不能解决数据结构的修改超时问题吧,其实我只是增加字段。

如果是增加字段,就增加一个可以为空的字段,建立后,更改值.然后看你的需要是否改为该字段不为空.


我不需要对以前的字段做修改,现在就是要增加几个字段,而且设置也是可以为空的。如果不设置为空肯定是加不上去的。

#6


加列的话不要用sqlserver管理工具去加,工具加的时候是重建表然后回填数据的,啰嗦
直接alter table table_name add col_name varchar(aaa)这样就行了,很快的
要注意的就是有没有涉及复制,还有如果要回填数据的时候怎么做

#7


楼上正解,使用ALTER TABLE进行修改表。