If the DTA database is huge in size Dtasp_clean HMData stored procedure may take days to execute in BizTalk 2004
ISSUE
===================
If the DTA database is huge in size Dtasp_clean HMData stored procedure may take days to execute in BizTalk 2004
CAUSE
=========
Dtasp_cleanHMData uses delete From table command in BizTalk 2004 and it used truncate table command in Biztalk 2006.So if you have a huge DTA database(of the order of 70-80 GB) it may take several days to execute the stored procedure to clean the DTA database in Biztalk 2004 environment.
The dtasp_CleanHMData stored procedure in BizTalk 2004 is:
CREATE PROCEDURE [dbo].[dtasp_CleanHMData]
@nCleanStatus int = 1
AS
SET TRANSACTION ISOLATION LEVEL SERIALIZABLE
BEGIN TRAN
IF ((@nCleanStatus & 0x1) > 0)
BEGIN
DELETE FROM dta_Adapter WITH (SERIALIZABLE)
DELETE FROM dta_CallChain WITH (SERIALIZABLE)
DELETE FROM dta_DebugTrace WITH (SERIALIZABLE)
DELETE FROM dta_DecryptionSubject WITH (SERIALIZABLE)
DELETE FROM dta_Host WITH (SERIALIZABLE)
DELETE FROM dta_MessageBox WITH (SERIALIZABLE)
DELETE FROM dta_MessageFields WITH (SERIALIZABLE)
DELETE FROM dta_MessageFieldValues WITH (SERIALIZABLE)
DELETE FROM dta_MessageInOutEvents WITH (SERIALIZABLE)
DELETE FROM dta_MessageInstances WITH (SERIALIZABLE)
DELETE FROM dta_PartyName WITH (SERIALIZABLE)
DELETE FROM dta_PortName WITH (SERIALIZABLE)
DELETE FROM dta_SchemaName WITH (SERIALIZABLE)
DELETE FROM dta_ServiceInstanceExceptions WITH (SERIALIZABLE)
DELETE FROM dta_ServiceInstances WITH (SERIALIZABLE)
DELETE FROM dta_SigningSubject WITH (SERIALIZABLE)
DELETE FROM dta_Url WITH (SERIALIZABLE)
END
IF ((@nCleanStatus & 0x2) > 0)
BEGIN
DELETE FROM TDDS_FailedTrackingData WITH (SERIALIZABLE)
END
IF ((@nCleanStatus & 0x4) > 0)
BEGIN
DELETE FROM dta_Services WITH (SERIALIZABLE) WHERE nServiceId > 13
END
COMMIT TRAN
SET TRANSACTION ISOLATION LEVEL READ COMMITTED
GO
The same stored procedure in BizTalk 2006/ 2006 R2 is:
USE [BizTalkDTADb]
GO
/****** Object: StoredProcedure [dbo].[dtasp_CleanHMData] Script Date: 05/12/2009 14:57:07 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [dbo].[dtasp_CleanHMData]
@nCleanStatus int = 1
AS
exec dtasp_DropViews
IF ((@nCleanStatus & 0x1) > 0)
BEGIN
TRUNCATE TABLE dta_Adapter
TRUNCATE TABLE dta_DecryptionSubject
TRUNCATE TABLE dta_Host
TRUNCATE TABLE dta_MessageBox
TRUNCATE TABLE dta_MessageFields
TRUNCATE TABLE dta_PartyName
TRUNCATE TABLE dta_PortName
TRUNCATE TABLE dta_SchemaName
TRUNCATE TABLE dta_ServiceInstanceExceptions
TRUNCATE TABLE dta_SigningSubject
TRUNCATE TABLE dta_CallChain
TRUNCATE TABLE dta_DebugTrace
TRUNCATE TABLE dta_MessageFieldValues
TRUNCATE TABLE dta_MessageInOutEvents
TRUNCATE TABLE dta_ServiceInstances
TRUNCATE TABLE Tracking_Fragments1
TRUNCATE TABLE Tracking_Parts1
TRUNCATE TABLE Tracking_Spool1
TRUNCATE TABLE Tracking_Fragments2
TRUNCATE TABLE Tracking_Parts2
TRUNCATE TABLE Tracking_Spool2
END
IF ((@nCleanStatus & 0x2) > 0)
BEGIN
TRUNCATE TABLE TDDS_FailedTrackingData
END
IF ((@nCleanStatus & 0x4) > 0)
BEGIN
DELETE FROM dta_Services WITH (SERIALIZABLE) WHERE nServiceId > 13
END
if ((@nCleanStatus & 0x8) > 0)
BEGIN
TRUNCATE TABLE Tracking_Fragments1
TRUNCATE TABLE Tracking_Parts1
TRUNCATE TABLE Tracking_Spool1
TRUNCATE TABLE Tracking_Fragments2
TRUNCATE TABLE Tracking_Parts2
TRUNCATE TABLE Tracking_Spool2
END
exec dtasp_CreateMessageFactsFindMsgViews
exec dtasp_CreateRealNamesView
exec dtasp_CreateServiceFactsView
RESOLUTION
===========
Don’t use dtasp_CleanHMData in Biztalk 2004 environment. You can use the script Bts_tracking_shrinkexistingdatabase.sql from the KB 894253 to clean the DTA database as this script uses truncate Table command.
Comments
- Anonymous
June 16, 2009
PingBack from http://fixmycrediteasily.info/story.php?id=10116