SQL Server Service Broker Updating Stored procedure

  • Ali Zaman

    SSC Veteran

    Points: 258

    how can you update the service broker stored procedure. when i update the stored procedure the changes dont come into affect. i have tried to alter the queue, waited for all jobs to finish, but some how still the old stored procedure is running. is there any way i can force changes to the stored procedure.

    i have tried sql profiler tracing but that didnt show any changes.

    ALTER PROCEDURE [dbo].[ServiceBroker_AtTarget_FromSLICJobEstimateDetailsNewLineAddedBySupplier]

    @XML XML(SLICMessageSchema)

    AS

    BEGIN

    -- extract data :

    DECLARE

    @LogNo INT,

    @QuoteReference INT,

    @JobEstimatesDetailID INT,

    @UserName NVARCHAR(50),

    @Description NVARCHAR(MAX),

    @UnitValue DECIMAL(18,2),

    @Quantity DECIMAL(18,2),

    @LineTotal DECIMAL(18,2),

    @QuoteTotal DECIMAL(18,2),

    @tsCreated DATETIME

    SELECT @QuoteReference = @XML.value('data(//FromSLIC/FromSLICJobEstimateDetailsNewLineAddedBySupplier/@QuoteReference)[1]', 'int'),

    @JobEstimatesDetailID = @XML.value('data(//FromSLIC/FromSLICJobEstimateDetailsNewLineAddedBySupplier/@JobEstimatesDetailID)[1]', 'int'),

    @UserName = @XML.value('data(//FromSLIC/FromSLICJobEstimateDetailsNewLineAddedBySupplier/@UserName)[1]', 'nvarchar(50)'),

    @Description = @XML.value('data(//FromSLIC/FromSLICJobEstimateDetailsNewLineAddedBySupplier/@Description)[1]', 'nvarchar(max)'),

    @UnitValue = @XML.value('data(//FromSLIC/FromSLICJobEstimateDetailsNewLineAddedBySupplier/@UnitValue)[1]', 'decimal(18,2)'),

    @Quantity = @XML.value('data(//FromSLIC/FromSLICJobEstimateDetailsNewLineAddedBySupplier/@Quantity)[1]', 'decimal(18,2)'),

    @tsCreated = @XML.value('data(//FromSLIC/FromSLICJobEstimateDetailsNewLineAddedBySupplier/@tsCreated)[1]', 'datetime')

    SET @LogNo = (SELECT mlq.logno FROM fsgmgtservices.dbo.maintlogquotes mlq WHERE mlq.quoteno = @QuoteReference)

    INSERT INTO fsgcentraldata.dbo.[tblSLICGeneratedEvents]

    (EventNameID, tsCreated, CreatedBy, IsAcknowledged, JobNumber, ContractorID)

    SELECT 9, @tsCreated, @UserName, 0, @LogNo, je.contractorid

    FROM [slic3.0].dbo.JobEstimates je WHERE je.legacyreference = CAST(@quotereference AS varchar(50))

    SET @LineTotal = (@UnitValue * @Quantity) // IF I CHANGE IT TO ((@UnitValue * 2)) FOR EXMPL

    INSERT INTO fsgmgtservices.dbo.maintlogquotedetails

    (quoteno, details, quantity, rate, amount, [date], slicreference)

    SELECT @QuoteReference, @description, @quantity, @UnitValue, @LineTotal, @tscreated, @JobEstimatesDetailID

    SET @QuoteTotal = (SELECT SUM(mlqd.amount) FROM fsgmgtservices.dbo.maintlogquotedetails mlqd

    WHERE mlqd.quoteno = @QuoteReference)

    UPDATE fsgmgtservices.dbo.maintlogquotes SET amount = @QuoteTotal WHERE quoteno = @QuoteReference

    INSERT INTO [fsgmgtservices].[dbo].maintlognotes

    (logno, [date], , , transferredfromslic)

    SELECT @LogNo, @tsCreated, @UserName, 'Quote ' + CAST(@QuoteReference AS varchar(20)) + ', new lines added by supplier in SLIC By ' + @UserName , 0

    END

  • WolfgangE

    SSCertifiable

    Points: 6311

    hi there,

    I think you are talking about the activation procedure for the queue.

    This is a procedure like any other store procedured. Just alter it as usual.

    Get sure that your procedure is actual bound to the queue. Maybe you are changing another procedure but not the current activation procedure.

    Use the ALTER QUEUE command to bind your procedure to the queue or check the table sys.service_queues, there you can find the current activation procedure.

Viewing 2 posts - 1 through 2 (of 2 total)

You must be logged in to reply to this topic. Login to reply