Из-за политики компаний и особенно предложений администраторов db я не могу использовать триггер, вызывающий любую сложную логику (в моем случае, вызов хранимой процедуры для связанного сервера).
Мне предложили реализоватьВместо этого используется сервис-брокер, поэтому мой вопрос в том, возможно ли это, и как я могу объединить его с приведенной ниже логикой. Хранение данных в очереди и передача их в хранимую процедуру.
Возможно, мне не хватает некоторых общихсмысл здесь, но это из-за моего непонимания для сервисного брокера и времени для завершения.
CREATE TRIGGER [dbo].[BenRef_UPDATEtrg]
ON [dbo].[ITRAEN]
AFTER UPDATE
AS
SET ANSI_NULLS ON
SET ANSI_WARNINGS ON
BEGIN
IF UPDATE(poz2)
BEGIN
DECLARE @benRefNum VARCHAR(30);
DECLARE @partija VARCHAR(30);
DECLARE @unikum VARCHAR(30);
DECLARE @storeBenRef as table
(
BeneficiaryRef VARCHAR(30),
Partija VARCHAR(30) collate Serbian_Latin_100_CI_AS,
Datum DATETIME,
Unikum VARCHAR(30)
)
-- Trigger logic
INSERT INTO @storeBenRef ( BeneficiaryRef, Partija, Datum, Unikum)
SELECT i.poz2, i.PARTIJA,CONVERT(DATETIME,i.DOTVORANJE,121) AS datum,i.Unikum
FROM inserted i
INNER JOIN deleted d
ON i.PARTIJA = d.PARTIJA
SET @benRefNum = ( SELECT BeneficiaryRef FROM @storeBenRef);
SET @partija = ( SELECT partija FROM @storeBenRef);
SET @unikum = (SELECT Unikum FROM @storeBenRef);
/*
Linked server procedure using retrieved data as parameters
*/
EXEC [EXPSRV1].[OPR].[dbo].[BenRefUpdate] @BenRefNum = @benRefNum, @Party = @partija,@Arrangement_unikum = @unikum;
END