TSQL - откат транзакции - тип ожидания PAGEIOLATCH_EX - SQL SErver 2005 - PullRequest
0 голосов
/ 30 июля 2010

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 Ответ

1 голос
/ 31 июля 2010

Вам все еще не хватает места на диске с заполнением T-Log? Не можете ли вы самостоятельно запустить этапы добавления, обновления, изменения, удаления, а затем переименования сценария, чтобы избежать заполнения журнала.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...