回答

收藏

将INT更改为BigInt

技术问答 技术问答 363 人阅读 | 0 人回复 | 2023-09-14

我有一个仓库表,里面有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很少是最高效的,并且倾向于使用临时表来进行任何修改现有列的操作。
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则