TSQL - 事务回滚 - PAGEIOLATCH_EX等待类型 - SQL SErver 2005

时间:2010-07-30 17:17:00

标签: sql-server-2005 tsql

64位Windows Server 2008,sql server 2005. 4处理器。数据库采用简单恢复模式 - 运行以下批处理脚本时,事务开始以“ALTER TABLE PS_RC_CASE_AUDIT ADD Z_TMP_ALTER_1 NVARCHAR(80) NULL”回滚 - 以下是观察到的等待类型。我们不得不几次回滚这个事务,因为日志文件已经填满,我们的磁盘空间不足。我们今天增加了更多空间,交易仍在回滚。有什么想法吗?

PAGEIOLATCH_EX    5006.53 
SLEEP_BPOOL_FLUSH 931.00
LCK_M_SCH_S   466.77
IO_COMPLETION     226.16

以下是剧本:

USE [DBNAME]
go
SET IMPLICIT_TRANSACTIONS ON
go
--  
-- Alters for record PS_RC_CASE_AUDIT 
--        RC_DESCRLONG - move to table end (LONGCHAR) 
--        RSLN_SUMMARY - change 
--     CASE_VISIBILITY - add 
--             BO_NAME - add 
--           REASON_CD - add 

-- Start the Transaction 


-- Data Conversion 


-- Add Columns 

ALTER TABLE PS_RC_CASE_AUDIT ADD CASE_VISIBILITY NVARCHAR(4) NULL
go
ALTER TABLE PS_RC_CASE_AUDIT ADD BO_NAME NVARCHAR(50) NULL
go
ALTER TABLE PS_RC_CASE_AUDIT ADD REASON_CD NVARCHAR(10) NULL
go
ALTER TABLE PS_RC_CASE_AUDIT ADD Z_TMP_ALTER_1 NVARCHAR(80) NULL
go
ALTER TABLE PS_RC_CASE_AUDIT ADD X_TMP_ALTER_1 NVARCHAR(MAX) NULL
go
UPDATE PS_RC_CASE_AUDIT SET  
    X_TMP_ALTER_1 = RC_DESCRLONG, 
    Z_TMP_ALTER_1 = RSLN_SUMMARY
go

-- Set Default Values 

UPDATE PS_RC_CASE_AUDIT SET CASE_VISIBILITY = ' ', BO_NAME = ' ',
 REASON_CD = ' '
go

-- Modify NULLability 

ALTER TABLE PS_RC_CASE_AUDIT ALTER COLUMN Z_TMP_ALTER_1 NVARCHAR(80)
 NOT NULL
go
ALTER TABLE PS_RC_CASE_AUDIT ALTER COLUMN CASE_VISIBILITY NVARCHAR(4)
 NOT NULL
go
ALTER TABLE PS_RC_CASE_AUDIT ALTER COLUMN BO_NAME NVARCHAR(50) NOT NULL
go
ALTER TABLE PS_RC_CASE_AUDIT ALTER COLUMN REASON_CD NVARCHAR(10) NOT
 NULL
go

-- Drop Old Columns 

ALTER TABLE PS_RC_CASE_AUDIT DROP COLUMN RC_DESCRLONG
go
ALTER TABLE PS_RC_CASE_AUDIT DROP COLUMN RSLN_SUMMARY
go

-- Rename Changed Columns 

sp_rename 'PS_RC_CASE_AUDIT.X_TMP_ALTER_1', RC_DESCRLONG, 'COLUMN'
go
sp_rename 'PS_RC_CASE_AUDIT.Z_TMP_ALTER_1', RSLN_SUMMARY, 'COLUMN'
go
COMMIT
go

-- Done 
go
COMMIT
go

1 个答案:

答案 0 :(得分:1)

T-Log填满时,你的磁盘空间是否还在用完? 您是否可以自行运行添加,更新,修改,删除,然后重命名脚本的各个阶段,以避免日志填满。