更改语句填写事务日志文件快速而不完成

时间:2018-06-14 18:18:31

标签: sql-server

我已经在alter statement下面运行了,这是部署的一部分,但在运行这个tr-log文件时很快就满了。

ALTER TABLE [dbo].[MY_ORDER_LINE] ALTER COLUMN [CREATED_BY]  INT NULL ;   --This has not yet been updated – column data type is still ‘smallint’

ALTER TABLE [dbo].[MY_ORDER_LINE] ALTER COLUMN [LAST_UPDATED_BY] INT NULL;  --  This has not yet been updated – column data type is still ‘smallint’

ALTER TABLE [dbo].[MY_ORDER_LINE] ALTER COLUMN [LAST_UPDATE_LOGIN] INT NULL;  --  This has not yet been updated – column data type is still ‘smallint’

GO

SQL Server版本:

Microsoft SQL Server 2012 (SP1) - 11.0.3000.0 (X64) 
Oct 19 2012 13:38:57 
Copyright (c) Microsoft Corporation
Standard Edition (64-bit) on Windows NT 6.1 <X64> (Build 7601: Service Pack 1) (Hypervisor)

操作系统:Windows Server 2008 R2标准64位

RAM:8 GB

日志文件大小:53 gb

我已经安排了空间,但现在这个查询已经过去120分钟并且没有完成。

也没有阻挡。

如何完成它?

2 个答案:

答案 0 :(得分:1)

首先,单独尝试每个ALTER语句,看看是否有帮助。

不幸的是,除此之外,您不能像使用ALTERUPDATE一样批量生成DELETE 1000条记录。

可以执行以下操作:

  1. 使用正确的列定义
  2. 创建新表[My_Order_Line_New]
  3. 执行INSERT将旧表中的所有行复制到新表中。这可以批量进行,因此您的日志不会爆炸。
  4. 重命名表:将[My_Order_Line]更改为[My_Order_Line_Old],然后将[My_Order_Line_New]更改为[My_Order_Line]

答案 1 :(得分:-2)

切换到简单恢复,运行ALTER语句,然后切换回事务恢复。