(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 : 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
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
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 : 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
D'avance merci si vous avez des pistes.