(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?
Ou puis je creer le trigger connecté a Master et en faisant ceci:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 use [base B] CREATE TRIGGER OVO_notification ON 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.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 CREATE TRIGGER OVO_notification ON Base_B.Table_A AFTER INSERT AS
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:
D'avance merci si vous avez des pistes.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
Partager