Bonjour,

Je ne sais pas si je suis dans le bon forum pour poser cette question Mais je me lance.

J'ai crée un trigger qui se déclanche après ajout d'une ligne dans une base de donnée et lorque le trigger est activé la base de donnée se plante.

Voici l'historique de mes developpements :

J'ai tester dans un premier temps cette appel :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
 
declare @statement nvarchar(4000)
declare @userno nvarchar(50) = 'test1'
set @statement = '"C:\Log\test.exe" '+convert(nvarchar,115) +' '+@userno + ' Write'
 
	 EXEC master ..xp_cmdshell @statement
cette apple marche sans problème

ensuite j'ai testé ce 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
 
 
USE [Therefore]
GO
/****** Object:  Trigger [dbo].[TriggerSecurite]    Script Date: 06/03/2015 18:26:07 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
 
-- =============================================
-- Author:		<Author,,Name>
-- Create date: <Create Date,,>
-- Description:	<Description,,>
-- =============================================
create TRIGGER [dbo].[TriggerSecurite] 
   ON   [Therefore].[dbo].[TheCat48]
   AFTER insert
AS 
BEGIN
declare @NomCat nvarchar(50) = 'Courrier Donges v2'
declare @statement nvarchar(4000)
declare @docno int = (select inserted .docno from inserted)
declare @userno nvarchar(100) = (
select ldap.login
 from therefore.dbo.LDAP ldap
 where LDAP.mail in ( select c49.Mail 
  FROM [Therefore].[dbo].[TheCat48] c48
  inner join Therefore .dbo.TheCat49 c49
  on c48.ID_Instruction =c49.ID
  where c48.docno = @docno )) 
  declare @catno int = (select [CtgryNo]
  FROM [Therefore].[dbo].[TheCategory]
  where name = @NomCat)
	-- SET NOCOUNT ON added to prevent extra result sets from
	-- interfering with SELECT statements.
	SET NOCOUNT ON;
 
 
END
là aussi pas de problème.

Par contre si je teste cette appel c'est le plantage.

Voici le 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
44
45
 
USE [Therefore]
GO
/****** Object:  Trigger [dbo].[TriggerSecurite]    Script Date: 06/03/2015 18:26:07 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
 
-- =============================================
-- Author:		<Author,,Name>
-- Create date: <Create Date,,>
-- Description:	<Description,,>
-- =============================================
create TRIGGER [dbo].[TriggerSecurite] 
   ON   [Therefore].[dbo].[TheCat48]
   AFTER insert
AS 
BEGIN
declare @NomCat nvarchar(50) = 'Courrier Donges v2'
declare @statement nvarchar(4000)
declare @docno int = (select inserted .docno from inserted)
declare @userno nvarchar(100) = (
select ldap.login
 from therefore.dbo.LDAP ldap
 where LDAP.mail in ( select c49.Mail 
  FROM [Therefore].[dbo].[TheCat48] c48
  inner join Therefore .dbo.TheCat49 c49
  on c48.ID_Instruction =c49.ID
  where c48.docno = @docno )) 
  declare @catno int = (select [CtgryNo]
  FROM [Therefore].[dbo].[TheCategory]
  where name = @NomCat)
	-- SET NOCOUNT ON added to prevent extra result sets from
	-- interfering with SELECT statements.
	SET NOCOUNT ON;
 
 
	set @statement = '"C:\Log\test.exe" '+convert(nvarchar,@DocNo) +' '+@userno + ' Write'   
 
	 EXEC master ..xp_cmdshell @statement
 
    -- Insert statements for trigger here
 
END
Avez vous une idée du pourquoi ? l'exécutable fonctionne normalement et je fait générer des logs lorsqu'il plante.


Merci de votre aide.