Quantcast
Channel: BizTalk Server Adapters and Adapter Pack Forum
Viewing all articles
Browse latest Browse all 197

WCF-SQL adapter in Biztalk send port causes deadlock

$
0
0

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


Viewing all articles
Browse latest Browse all 197

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>