un trigger bloque ma table
(sql server 2005)
Bonjour a tous,
j'ai creer un trigger qui doit ecrir dans un fichier txt lorsque un INSERT est realisé sur une table specifique.
J'ai une question et un probleme a vous soumettre.
La question est:
Le trigger porte sur la table_A qui se trouve sur la base B (par exemple)
Dois je creer le trigger en me connectant d'abord a la base de données oB u se trouve ma table_A?
Code:
1 2 3 4 5 6
| use [base B]
CREATE TRIGGER OVO_notification
ON Table_A
AFTER INSERT
AS |
Ou puis je creer le trigger connecté a Master et en faisant ceci:
Code:
1 2 3 4
| CREATE TRIGGER OVO_notification
ON Base_B.Table_A
AFTER INSERT
AS |
Et le probleme est que lorsque je creer le trigger, la table_A n'est plus mis a jour par l'application...Plus d'insert. Essayant de comprendre, j'ai droper le trigger et la, toutes les transactions se sont insertées d'un coup.
Ensuite j'ai re creer le trigger et voila que ça recommence, plus d'insert.
Est il possible que le trigger bloque les inserts sur la table?
Je donne le code du trigger:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43
| CREATE TRIGGER OVO_notification
ON VE_event
AFTER INSERT
AS
DECLARE @cmd nvarchar(1024)
DECLARE @OpC_MsgText nvarchar(1024)
DECLARE @OpC_Severity nvarchar(20)
DECLARE @View_EventID int
DECLARE @View_EventType nvarchar(512)
DECLARE @View_Module nvarchar(512)
DECLARE @View_Severity nvarchar(512)
DECLARE @View_EventMsg nvarchar(512)
DECLARE @View_Time datetime
SELECT @View_EventID = (SELECT EventID FROM INSERTED)
SELECT @View_EventType = (SELECT EventType FROM INSERTED)
SELECT @View_Module = (SELECT Module FROM INSERTED)
SELECT @View_Severity = (SELECT Severity FROM INSERTED)
SELECT @View_EventMsg = (SELECT ModuleAndEventText FROM INSERTED)
SELECT @View_Time = (SELECT Time FROM INSERTED)
SELECT @OpC_Severity =
CASE
WHEN @View_Severity ='INFO' THEN 'normal'
WHEN @View_Severity ='WARNING' THEN 'warning'
WHEN @View_Severity ='ERROR' THEN 'critical'
WHEN @View_Severity ='AUDIT_SUCCESS' THEN 'normal'
WHEN @View_Severity ='AUDIT_FAIL' THEN 'normal'
ELSE 'critical'
END;
BEGIN TRY
SET @OpC_MsgText = 'MSG: "' + @View_EventID + '|' + @View_EventType + '|' + @View_Module + '|' + @View_Severity + '|' + @View_EventMsg + '|' + @View_Time + '"'
SET @cmd = 'echo ' + @OpC_MsgText + ' > E:\temp\VMwareView-events.txt'
EXEC master..xp_cmdshell @cmd, no_output
END TRY
BEGIN CATCH
IF (XACT_STATE()) = -1
BEGIN
ROLLBACK TRANSACTION;
END;
END CATCH;
GO |
D'avance merci si vous avez des pistes.