我有一个大表,我希望在其上运行此查询:
ALTER TABLE Employee
DROP COLUMN Zipcode
Zipcode
数据类型为varchar
。
这种方法不适合,因为它需要很长时间并且增加了日志空间,并且持续数小时。任何人都可以指导我一种独特且更复杂的方法,它不会影响数据库的性能吗?
答案 0 :(得分:2)
你真的测试过吗?删除列是即时的。你没有问题需要解决。
<小时/> 好的,所以看起来你有阻塞问题。你还没有跟进我对此的评论。你应该。
如果正在运行的事务正在使用您要更改的表,则alter必须等待。找出谁阻止访问该表。运行sp_who2
并查看阻止列。
答案 1 :(得分:1)
说实话,我认为你没有任何选择:ALTER TABLE
语句如删除一个列可能需要很长时间才能在非常大的表上进行,所以我认为你必须确定一个机会之窗,你可以得到一些体面的停机时间然后去做。您可以考虑将数据库日志模型从FULL
更改为SIMPLE
或BULK LOGGED
,以帮助减少日志写入和可能的一些时间,但这肯定需要一段时间。 #39;不要担心实时交易流量。