Précédent   Forum des professionnels en informatique > Bases de données > MS SQL-Server > Outils
Outils Forum d'entraide sur les outils gravitant autour de MS-SQL Server, tels que bcp, TDS, ...
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 21/12/2007, 09h19   #1
Membre chevronné
 
Avatar de Oliv-
 
Inscription : mars 2006
Messages : 643
Détails du profil
Informations personnelles :
Âge : 41

Informations forums :
Inscription : mars 2006
Messages : 643
Points : 699
Points : 699
Par défaut problème OSQL et ##table tempo

Bonjour,

J'ai une procédure stockée qui sert à enregistrer un fichier sur un partage
réseau.

lorsque je lance directement cette procédure aucun souci.

Lorsque je la lance à partir d'un trigger OSQL bloque le serveur jusqu'au
timeout.

Une idée ?

Code :
1
2
3
4
5
6
7
8
9
10
 
-- avant je crée ma table tempo
 
 
SET @vcQuery='SET NOCOUNT ON;select mess from
##GAN_EDI'+REPLACE(host_name(),'-','')
SET @cmd = 'osql -E -S'+@vcServerName+' -s; -Q"'+@vcQuery+'
" -o"\\'+host_name()+'\gan\'+@GAN_refCourtier+'.iim" -w5000 -h-1 -b -t10 -n
'
EXEC master..xp_cmdshell @cmd, no_output
Oliv- est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/12/2007, 22h05   #2
Membre Expert
 
Inscription : juin 2007
Messages : 1 056
Détails du profil
Informations forums :
Inscription : juin 2007
Messages : 1 056
Points : 1 078
Points : 1 078
bonjour,

c'est dans un trigger , vous insérez bcp de lignes ? Qu'est-ce qu'il y a comme message dans le fichier .iim ?
merci
__________________
Emmanuel T.
kagemaru est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/12/2007, 11h39   #3
Membre chevronné
 
Avatar de Oliv-
 
Inscription : mars 2006
Messages : 643
Détails du profil
Informations personnelles :
Âge : 41

Informations forums :
Inscription : mars 2006
Messages : 643
Points : 699
Points : 699
Bonjour et joyeux noel,
Oui dans un trigger parce que je ne peux pas faire autrement , dans ce programme je ne peut créer que des checkbox ou textbox.

le fichier créé (.iim) est un fichier texte de 20 lignes environ rien d'extraordinaire.

Si je met un time out dans la commande OSQL dans le fichier .iim j'ai un message timeout... (donc le fichier se créé bien)

Si je met @vcQuery=select toto='toto' ca marche.
Oliv- est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/01/2008, 12h45   #4
Membre chevronné
 
Avatar de Oliv-
 
Inscription : mars 2006
Messages : 643
Détails du profil
Informations personnelles :
Âge : 41

Informations forums :
Inscription : mars 2006
Messages : 643
Points : 699
Points : 699
Bonjour,
J'ai essayé en lancant un ps à partir d'osql même pb ?
Merci d'avance
Oliv- est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/01/2008, 18h55   #5
Membre Expert
 
Inscription : juin 2007
Messages : 1 056
Détails du profil
Informations forums :
Inscription : juin 2007
Messages : 1 056
Points : 1 078
Points : 1 078
Bonjour,

désolé pour le retard mais pourrais-tu poster le message d'erreur complet et la manip complète sous OSQL ?

Merci
__________________
Emmanuel T.
kagemaru est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/01/2008, 11h33   #6
Membre chevronné
 
Avatar de Oliv-
 
Inscription : mars 2006
Messages : 643
Détails du profil
Informations personnelles :
Âge : 41

Informations forums :
Inscription : mars 2006
Messages : 643
Points : 699
Points : 699
Bonjour Emmanuel,
Tu n'as pas à t'excuser, merci de te pencher sur mon pb;

ma procédure :
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
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
---ps_sinistre_gan_extranet_Edi_ps 94697,'6.58212830'
 
 
ALTER PROCEDURE ps_sinistre_gan_extranet_Edi_ps @Sinistre_id int=0, @Sin_RefCourtier varchar(16)=''
 
AS
 
SET QUOTED_IDENTIFIER OFF 
SET ANSI_NULLS OFF 
SET CONCAT_NULL_YIELDS_NULL  OFF
SET NOCOUNT ON
begin
 
IF @Sinistre_id=0 AND @Sin_RefCourtier<>''
	Begin
	SELECT @Sinistre_id =sin_sinistre_id FROM SI_Sinistres WHERE 
	Sin_RefCourtier=@Sin_RefCourtier
	End
 
 
DECLARE @gan_numContrat varchar(16),
	@gan_dateSurv varchar(12),
	@gan_refCourtier varchar(16),
	@gan_immat varchar(16),
 
	@gan_motRechercher varchar(32)
 
 
 
 
SELECT @gan_numContrat=PP_Contrats.Pol_Contrat,@gan_dateSurv= convert(varchar(12),SI_Sinistres.Sin_DteSurvenance,103),
@gan_refCourtier=SI_Sinistres.Sin_RefCourtier, @gan_immat=FL_Risque.Flor_Immat_Risque, 
 
@gan_motRechercher=PG_Adresses.Adr_Nom
 
FROM SI_Sinistres LEFT JOIN  FL_Risque ON SI_Sinistres.Sin_Risque_id = FL_Risque.Flor_Risque_id 
LEFT JOIN PG_Compagnies_GTA ON SI_Sinistres.Sin_CompagnieGTA = PG_Compagnies_GTA.CieGTA_code LEFT JOIN PG_Adresses ON PG_Compagnies_GTA.CieGta_Adresse_id = PG_Adresses.Adr_Adresse_id  
INNER JOIN PP_Contrats ON SI_Sinistres.Sin_Contrat_id = PP_Contrats.Pol_Contrat_id 
LEFT JOIN SI_Sinistres_4Roues ON  
SI_Sinistres.Sin_Sinistre_id = SI_Sinistres_4Roues.SinC1_Sinistre_id 
 
WHERE ((SI_Sinistres.Sin_Sinistre_id=@Sinistre_id))
 
 
 
declare @mess varchar(4000), @vcServerName   sysname
 
SET @mess = 'select mess= ''VERSION BUILD=6021121     ''
+ char(13) + char(10)+ ''TAG POS=1 TYPE=INPUT:TEXT FORM=NAME:XSsinDCE798Form ATTR=NAME:screen.numContrat CONTENT=' + @gan_numContrat+'''
+ char(13) + char(10)+ ''TAG POS=1 TYPE=INPUT:TEXT FORM=NAME:XSsinDCE798Form ATTR=NAME:screen.dateSurv CONTENT=' + @gan_dateSurv+'''
+ char(13) + char(10)+ ''TAG POS=1 TYPE=A ATTR=TXT:Valider   ''
+ char(13) + char(10)+ ''SET !ERRORIGNORE YES''
+ char(13) + char(10)+ ''TAG POS=1 TYPE=INPUT:TEXT FORM=NAME:XSsinDCE798Form ATTR=NAME:screen.refCourtier CONTENT=' + @gan_refCourtier+'''
+ char(13) + char(10)+ ''TAG POS=1 TYPE=INPUT:TEXT FORM=NAME:XSsinDCE798Form ATTR=NAME:screen.immat CONTENT=' + @gan_immat+''''
+'+ char(13) + char(10)+ ''TAG POS=1 TYPE=INPUT:TEXT FORM=NAME:XSsinDCE798Form ATTR=NAME:motRechercher CONTENT='+ REPLACE(@gan_motRechercher,' ','<SP>')+'''
+ char(13) + char(10)+ ''TAG POS=1 TYPE=A ATTR=TXT:Rechercher   '''
+'+ char(13) + char(10)'
 
exec(@mess)
end
GO
 
GRANT Execute ON dbo.ps_sinistre_gan_extranet_Edi_ps  TO Public
go
lancé par mon 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
SET QUOTED_IDENTIFIER ON 
GO
SET ANSI_NULLS OFF 
GO
 
ALTER  TRIGGER dbo.AfterUpd_si_sinistres_4roues ON SI_Sinistres_4Roues AFTER UPDATE AS 
 
declare @Sinistre_id int, @edi_gan bit,@GAN_refCourtier varchar(20)
 
SELECT 	@Sinistre_id = Sinc1_Sinistre_id,@edi_gan=Sinc1_EDI_gan_creation ,
	@GAN_refCourtier=Sin_RefCourtier
	FROM inserted INNER JOIN si_sinistres ON sin_sinistre_id=Sinc1_Sinistre_id
IF @edi_gan=1 AND host_name()='CATTEAU-O' --création d'un fichier pour IMACRO pour l'extranet GAN
Begin
--EXEC ps_sinistre_gan_extranet_Edi @Sinistre_id 
 
 	DECLARE	@cmd varchar(300), @var sysname, @user varchar(20), @vcServerName   sysname
 
IF @vcServerName IS NULL
   SET @vcServerName = @@servername
	declare @vcQuery        varchar(8000)
	SET @vcQuery='SET NOCOUNT ON;exec ps_sinistre_gan_extranet_Edi_ps ' + convert(varchar(12),@Sinistre_id)
 
--SET @cmd = 'osql -E -S'+@vcServerName+' -s; -Q"'+@vcQuery+' " -o"\\'+host_name()+'\gan\'+@GAN_refCourtier+'.iim" -w5000 -h-1 -b -t10 -n '
SET @cmd = 'osql -E -S'+@vcServerName+' -s; -Q"'+@vcQuery+' " -o"\\'+host_name()+'\gan\6.58212830.iim" -w5000 -h-1 -b -t10 -n '
 
 
SELECT @cmd
--RAISERROR (@cmd ,16,-1)
EXEC master..xp_cmdshell @cmd, no_output
 
 
 
UPDATE SI_Sinistres_4Roues SET Sinc1_EDI_gan_creation=0 WHERE  Sinc1_Sinistre_id=@Sinistre_id
End
GO
SET QUOTED_IDENTIFIER OFF 
GO
SET ANSI_NULLS ON 
GO
Oliv- est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/01/2008, 11h50   #7
Membre chevronné
 
Avatar de Oliv-
 
Inscription : mars 2006
Messages : 643
Détails du profil
Informations personnelles :
Âge : 41

Informations forums :
Inscription : mars 2006
Messages : 643
Points : 699
Points : 699
Si je met en commentaire la partie d'affectation des variables cela fonctionne, donc j'ai testé sans variable et on dirait qu'il n'arrive pas à exécuter ma requete select ...FROM SI_Sinistres
Oliv- est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/01/2008, 14h07   #8
Membre Expert
 
Inscription : juin 2007
Messages : 1 056
Détails du profil
Informations forums :
Inscription : juin 2007
Messages : 1 056
Points : 1 078
Points : 1 078
Citation:
---ps_sinistre_gan_extranet_Edi_ps 94697,'6.58212830'
quand tu lances la proc sans paramètre ça fonctionne c'est ça ?

il doit placer les paramètres par défaut
Code :
@Sinistre_id int=0, @Sin_RefCourtier varchar(16)=''

Quand tu lances

Code :
ps_sinistre_gan_extranet_Edi_ps 94697,'6.58212830'
tu n'as pas le résultat escompté ?

Code :
ON dirait qu'il n'arrive pas à exécuter ma requete SELECT ...FROM SI_Sinistres
il y a 2 requêtes sur SI_Sinistres dans la procédure ps_sinistre_gan_extranet_Edi_ps, de quel select parles-tu ?

merci
__________________
Emmanuel T.
kagemaru est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/01/2008, 14h49   #9
Membre chevronné
 
Avatar de Oliv-
 
Inscription : mars 2006
Messages : 643
Détails du profil
Informations personnelles :
Âge : 41

Informations forums :
Inscription : mars 2006
Messages : 643
Points : 699
Points : 699
Citation:
Envoyé par kagemaru Voir le message
tu n'as pas le résultat escompté ?
non ce n'est pas une histoire de paramétres
en fait si je lances en dehors d'un trigger ca marche sinon non, ca doit être une histoire de droits ou d'instance

Citation:

il y a 2 requêtes sur SI_Sinistres dans la procédure ps_sinistre_gan_extranet_Edi_ps, de quel select parles-tu ?

merci
le 2 ème celui qui n'est pas dans la clause if
Oliv- est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/01/2008, 17h32   #10
Membre chevronné
 
Avatar de Oliv-
 
Inscription : mars 2006
Messages : 643
Détails du profil
Informations personnelles :
Âge : 41

Informations forums :
Inscription : mars 2006
Messages : 643
Points : 699
Points : 699

Bon j'abandonne cette méthode
et j'ai réussi avec ces procédures de Philippe TROTIN :

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
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
CREATE PROCEDURE tp_File_WriteFile 
( 
 @FileID  int,    -- File id reference 
 @Text  nvarchar(4000),  -- Text to write 
 @NewLine int = 1 
) 
AS 
BEGIN 
 SET NOCOUNT ON 
 
 
 DECLARE @OLEResult  int 
 
 
 -- Write the text in the file 
 IF @NewLine = 1 
 BEGIN 
  EXECUTE @OLEResult = sp_OAMethod @FileID, 'WriteLine', NULL, @Text 
 END 
 ELSE 
 BEGIN 
  EXECUTE @OLEResult = sp_OAMethod @FileID, 'Write', NULL, @Text 
 END 
 
 
 IF @OLEResult <> 0 RETURN -1 
 
 
END 
GO
 
 
 
CREATE PROCEDURE tp_File_OpenFile 
( 
 @FileName  nvarchar(250),    -- Name of the file to create 
 @FS    int   OUTPUT,  -- File system object reference 
 @FileID   int   OUTPUT  -- File id reference 
) 
AS 
BEGIN 
 SET NOCOUNT ON 
 
 
 DECLARE @OLEResult  int 
 
 
 -- Create scripting object 
 EXECUTE @OLEResult = sp_OACreate 'Scripting.FileSystemObject', @FS OUT 
 IF @OLEResult <> 0  RETURN -1 
 
 
 --Ouvre le fichier (2 = ForWriting, 8 = ForAppending) 
 EXECUTE @OLEResult = sp_OAMethod @FS, 'OpenTextFile', @FileID OUT, 
@FileName, 2, 1 
 IF @OLEResult <> 0  RETURN -1 
 
 
END 
GO 
 
CREATE PROCEDURE tp_File_CloseFile 
( 
 @FS   int,  -- File system object reference 
 @FileID  int   -- File id reference 
) 
AS 
BEGIN 
 SET NOCOUNT ON 
 
 
 DECLARE @OLEResult  int 
 
 
 -- Close file 
 EXECUTE @OLEResult = sp_OADestroy @FileID 
 EXECUTE @OLEResult = sp_OADestroy @FS 
 
 
END 
GO
--------------------------

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
DECLARE @FS  int 
DECLARE @FileID  int 
 
 
  EXEC tp_File_OpenFile '\\pc\dossier\test.txt', @FS OUTPUT, @FileID OUTPUT 
 
 
  EXEC tp_File_WriteFile @FileID, '1. ceci est un test
de 2 lignes' 
  EXEC tp_File_WriteFile @FileID, '2. ceci est un autre test' 
 
 
  EXEC tp_File_CloseFile @FS, @FileID
Merci pour le temps passé.

J'aurais quand même aimé savoir où j'ai merd...
Oliv- est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 08h08.


 
 
 
 
Partenaires

Hébergement Web