Hi
I have an application running on Biztalk 2010. This has receive location pointing to SAP and receives bulk IDOCS as XML and inserts into table through specific send ports. I get a deadlock in a particular send port and this how it is configured. Very urgent,
need help!
WCF-SQL adapter
Compositeoperation
2 storedprocedures are called from this port when a specific IDOC type is received.
Use Ambient transaction - true (tried changing this to false - no help)
Use transaction - false (tried changing this to true - no help)
These are the SPs I use, simple Insert / update. I dont know if it is a weird coincidence. This was all working fine until I added the last parameter 'LOSGR' to my SP.
ALTER PROCEDURE [dbo].[dpsp_COPCPA02_E2KEKO002]
@KALNR varchar(12), -- CostSetCode
@KALKA varchar(10), -- Type
@MATNR varchar(30), -- MaterialNumber
@WERKS varchar(10), -- Site
@LOSGR varchar(40) -- LotSize
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
IF NOT EXISTS (SELECT * FROM dbo.CostSetMaster (NOLOCK) WHERE CostSetCode = @KALNR)
BEGIN
INSERT INTO dbo.CostSetMaster
(
[CostSetCode] ,[Type] ,[MaterialNumber] ,[Plant] ,[LotSize]
)
VALUES
(
@KALNR ,@KALKA ,@MATNR ,@WERKS ,COALESCE(CAST(@LOSGR as decimal(30,10)), NULL) )
END
ELSE
BEGIN
UPDATE dbo.CostSetMaster
SET
[Type] = @KALKA ,[MaterialNumber] = @MATNR ,[Plant] = @WERKS ,[LotSize] = COALESCE(CAST(@LOSGR as decimal(30,10)), NULL) ,[CDCLastModifiedDate] = GETDATE()
WHERE (CostSetCode = @KALNR)
END
END
ALTER PROCEDURE [dbo].[dpsp_COPCPA02_E2KEPH001]
@KALNR varchar(12), -- CostSetCode
@KADKY varchar(20), -- CostSetDate
@KKZST varchar(1), -- LevelIndicator
@KST001 varchar(15), -- CostField001
@KST002 varchar(15), -- CostField002
@KST003 varchar(15), -- CostField003
@KST004 varchar(15), -- CostField004
@KST005 varchar(15), -- CostField005
@KST006 varchar(15), -- CostField006
@KST007 varchar(15), -- CostField007
@KST008 varchar(15), -- CostField008
@KST009 varchar(15), -- CostField009
@KST010 varchar(15), -- CostField010
@KST011 varchar(15), -- CostField011
@KST012 varchar(15), -- CostField012
@KST013 varchar(15), -- CostField013, ForeignFreightThisLevel, ForeighFreightLowLevel, DomesticFreightThisLevel, DomesticFreightLowLevel
@KST014 varchar(15), -- CostField014
@KST015 varchar(15), -- CostField015, DutiesThisLevel, DutiesLowLevel
@KST016 varchar(15), -- CostField016
@KST017 varchar(15), -- CostField017, OverHeadThisLevel, OverheadLowLevel, InternalOverheadThisLevel, InternalOverheadLowLevel
@KST018 varchar(15), -- CostField018
@KST019 varchar(15), -- CostField019, LaborThisLevel, LaborLowLevel
@KST020 varchar(15), -- CostField020
@KST021 varchar(15), -- CostField021
@KST022 varchar(15), -- CostField022
@KST023 varchar(15), -- CostField023, MaterialThisLevel, MaterialLowLevel
@KST024 varchar(15), -- CostField024
@KST025 varchar(15), -- CostField025
@KST026 varchar(15), -- CostField026
@KST027 varchar(15), -- CostField027
@KST028 varchar(15), -- CostField028
@KST029 varchar(15), -- CostField029
@KST030 varchar(15), -- CostField030
@KST031 varchar(15), -- CostField031
@KST032 varchar(15), -- CostField032
@KST033 varchar(15), -- CostField033
@KST034 varchar(15), -- CostField034
@KST035 varchar(15), -- CostField035
@KST036 varchar(15), -- CostField036
@KST037 varchar(15), -- CostField037
@KST038 varchar(15), -- CostField038
@KST039 varchar(15), -- CostField039
@KST040 varchar(15), -- CostField040
@TVERS varchar(5), -- Version
@LOSGR varchar(40) -- LotSize(in master only)
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
DECLARE @CostTotal decimal(20,10)
SET @CostTotal = SUM(CAST(ISNULL(@KST001,0.00) as decimal(20,10))+CAST(ISNULL(@KST002,0.00) as decimal(20,10))+CAST(ISNULL(@KST003,0.00) as decimal(20,10))+CAST(ISNULL(@KST004,0.00) as decimal(20,10))+CAST(ISNULL(@KST005,0.00)
as decimal(20,10))+CAST(ISNULL(@KST006,0.00) as decimal(20,10))+CAST(ISNULL(@KST007,0.00) as decimal(20,10))+CAST(ISNULL(@KST008,0.00) as decimal(20,10))+CAST(ISNULL(@KST009,0.00) as decimal(20,10))+CAST(ISNULL(@KST010,0.00) as decimal(20,10))+
CAST(ISNULL(@KST011,0.00) as decimal(20,10))+CAST(ISNULL(@KST012,0.00) as decimal(20,10))+CAST(ISNULL(@KST013,0.00)
as decimal(20,10))+CAST(ISNULL(@KST014,0.00) as decimal(20,10))+CAST(ISNULL(@KST015,0.00) as decimal(20,10))+CAST(ISNULL(@KST016,0.00) as decimal(20,10))+CAST(ISNULL(@KST017,0.00) as decimal(20,10))+CAST(ISNULL(@KST018,0.00) as decimal(20,10))+CAST(ISNULL(@KST019,0.00)
as decimal(20,10))+CAST(ISNULL(@KST020,0.00) as decimal(20,10))+
CAST(ISNULL(@KST021,0.00) as decimal(20,10))+CAST(ISNULL(@KST022,0.00) as decimal(20,10))+CAST(ISNULL(@KST023,0.00)
as decimal(20,10))+CAST(ISNULL(@KST024,0.00) as decimal(20,10))+CAST(ISNULL(@KST025,0.00) as decimal(20,10))+CAST(ISNULL(@KST026,0.00) as decimal(20,10))+CAST(ISNULL(@KST027,0.00) as decimal(20,10))+CAST(ISNULL(@KST028,0.00) as decimal(20,10))+CAST(ISNULL(@KST029,0.00)
as decimal(20,10))+CAST(ISNULL(@KST030,0.00) as decimal(20,10))+
CAST(ISNULL(@KST031,0.00) as decimal(20,10))+CAST(ISNULL(@KST032,0.00) as decimal(20,10))+CAST(ISNULL(@KST033,0.00)
as decimal(20,10))+CAST(ISNULL(@KST034,0.00) as decimal(20,10))+CAST(ISNULL(@KST035,0.00) as decimal(20,10))+CAST(ISNULL(@KST036,0.00) as decimal(20,10))+CAST(ISNULL(@KST037,0.00) as decimal(20,10))+CAST(ISNULL(@KST038,0.00) as decimal(20,10))+CAST(ISNULL(@KST039,0.00)
as decimal(20,10))+CAST(ISNULL(@KST040,0.00) as decimal(20,10)))
IF(ISNULL(@LOSGR,'0.000') = '0.000') SET @LOSGR = '1.0000'
SET @CostTotal = @CostTotal/CAST(@LOSGR as decimal(30,10))
IF NOT EXISTS (SELECT * FROM dbo.CostSetDetails (NOLOCK) WHERE CostSetMasterCode = @KALNR AND CostSetDate = CAST(@KADKY as datetime) AND ISNULL(LevelIndicator,'') = ISNULL(@KKZST,''))
BEGIN
INSERT INTO dbo.CostSetDetails
(
[CostSetMasterCode]
,[CostTotal]
,[CostSetDate]
,[LevelIndicator]
,[Version]
,[Material]
,[Labor]
,[Burden]
,[Subcontract]
,[Overhead]
,[ForeignFreight]
,[DomesticFreight]
,[Duties]
,[InternalOverhead]
,[CostField001]
,[CostField002]
,[CostField003]
,[CostField004]
,[CostField005]
,[CostField006]
,[CostField007]
,[CostField008]
,[CostField009]
,[CostField010]
,[CostField011]
,[CostField012]
,[CostField013]
,[CostField014]
,[CostField015]
,[CostField016]
,[CostField017]
,[CostField018]
,[CostField019]
,[CostField020]
,[CostField021]
,[CostField022]
,[CostField023]
,[CostField024]
,[CostField025]
,[CostField026]
,[CostField027]
,[CostField028]
,[CostField029]
,[CostField030]
,[CostField031]
,[CostField032]
,[CostField033]
,[CostField034]
,[CostField035]
,[CostField036]
,[CostField037]
,[CostField038]
,[CostField039]
,[CostField040]
,[CDCLastModifiedDate]
)
VALUES
(
@KALNR
,@CostTotal
,CAST(@KADKY as datetime)
,@KKZST
,@TVERS
,@KST023
,@KST019
,@KST021
,@KST001
,@KST017
,@KST013
,@KST013
,@KST015
,@KST017
,@KST001
,@KST002
,@KST003
,@KST004
,@KST005
,@KST006
,@KST007
,@KST008
,@KST009
,@KST010
,@KST011
,@KST012
,@KST013
,@KST014
,@KST015
,@KST016
,@KST017
,@KST018
,@KST019
,@KST020
,@KST021
,@KST022
,@KST023
,@KST024
,@KST025
,@KST026
,@KST027
,@KST028
,@KST029
,@KST030
,@KST031
,@KST032
,@KST033
,@KST034
,@KST035
,@KST036
,@KST037
,@KST038
,@KST039
,@KST040
,GETDATE()
)
END
ELSE
BEGIN
UPDATE dbo.CostSetDetails
SET
[CostTotal] = @CostTotal
,[Version] = @TVERS
,[Material] = @KST023
,[Labor] = @KST019
,[Burden] = @KST021
,[Subcontract] = @KST001
,[Overhead] = @KST017
,[ForeignFreight] = @KST013
,[DomesticFreight] = @KST013
,[Duties] = @KST015
,[InternalOverhead] = @KST017
,[CostField001] = @KST001
,[CostField002] = @KST002
,[CostField003] = @KST003
,[CostField004] = @KST004
,[CostField005] = @KST005
,[CostField006] = @KST006
,[CostField007] = @KST007
,[CostField008] = @KST008
,[CostField009] = @KST009
,[CostField010] = @KST010
,[CostField011] = @KST011
,[CostField012] = @KST012
,[CostField013] = @KST013
,[CostField014] = @KST014
,[CostField015] = @KST015
,[CostField016] = @KST016
,[CostField017] = @KST017
,[CostField018] = @KST018
,[CostField019] = @KST019
,[CostField020] = @KST020
,[CostField021] = @KST021
,[CostField022] = @KST022
,[CostField023] = @KST023
,[CostField024] = @KST024
,[CostField025] = @KST025
,[CostField026] = @KST026
,[CostField027] = @KST027
,[CostField028] = @KST028
,[CostField029] = @KST029
,[CostField030] = @KST030
,[CostField031] = @KST031
,[CostField032] = @KST032
,[CostField033] = @KST033
,[CostField034] = @KST034
,[CostField035] = @KST035
,[CostField036] = @KST036
,[CostField037] = @KST037
,[CostField038] = @KST038
,[CostField039] = @KST039
,[CostField040] = @KST040
,[CDCLastModifiedDate] = GETDATE()
WHERE CostSetMasterCode = @KALNR AND CostSetDate = CAST(@KADKY as datetime) AND ISNULL(LevelIndicator,'') = ISNULL(@KKZST,'')
END
END