我有一个仓库表,里面有16吨数据。我有一些整数列。对于我们编写的每个查询,我们都必须将它们转换为BIGINT,因为SUM太大而无法容纳在INT中。0 ^3 l$ _1 w; @+ V Y. F" A
现在,我们正在开发一个新的数据集市。因此,我们认为,为什么不将所有这些列都更改为BIGINT呢?对于新的查询集,我们不必担心。8 K) k8 B7 A& y3 X R
由于数据已经加载,因此我认为我将使用Management Studio并更改数据类型。但是我首先得到一个警告: 6 o; \; V K" W+ h2 nSaving Definition Changes to tables with large amounts of data could take a / f& w) w+ h$ F) L8 U7 D; vconsiderable amount of time. While changes are being saved, table data will " {1 T+ ]1 t% j1 C# Z1 M* Xnot be accessible. : |$ r1 b; Q% C# @" D7 d然后我得到一个错误:9 c2 N8 a z3 F1 k8 D, H0 ~3 X% \+ N
Timeout expired. The timeout period elapsed prior to completion of the i; v9 V- v' C. m
operation or the server is not responding.6 `" @7 R: v- q; Y$ |& ^5 c
我该如何解决? 2 x/ m1 ?! |/ O& s2 x & i2 ~: F: L3 C解决方案: ; W. e0 R3 U$ X6 z 6 h/ f' a9 k! ?8 q( @' q) @' Z: V9 [( Q% O7 n; N" ^' o+ E$ j$ g
9 C* V) O8 ~+ R! O, F2 T k1 V
如果这些列中的一列或多列没有约束(例如外键,索引,默认值,规则等),则您应该能够通过以下方法快速更改每一列 + c1 n6 P: C I; Y' L1 C3 P* FALTER TABLE monster ALTER COLUMN MyIntCol1 bigint8 \3 T' e$ _* E7 i* M
Management Studio的更改SQL很少是最高效的,并且倾向于使用临时表来进行任何修改现有列的操作。