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
答案 0 :(得分:1)
T-Log填满时,你的磁盘空间是否还在用完? 您是否可以自行运行添加,更新,修改,删除,然后重命名脚本的各个阶段,以避免日志填满。