IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Outils SQL Server Discussion :

problème OSQL et ##table tempo


Sujet :

Outils SQL Server

  1. #1
    Expert éminent
    Avatar de Oliv-
    Homme Profil pro
    solution provider
    Inscrit en
    Mars 2006
    Messages
    4 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : solution provider

    Informations forums :
    Inscription : Mars 2006
    Messages : 4 087
    Points : 7 168
    Points
    7 168
    Billets dans le blog
    20
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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

  2. #2
    Membre éprouvé
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    1 056
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 1 056
    Points : 1 216
    Points
    1 216
    Par défaut
    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.

  3. #3
    Expert éminent
    Avatar de Oliv-
    Homme Profil pro
    solution provider
    Inscrit en
    Mars 2006
    Messages
    4 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : solution provider

    Informations forums :
    Inscription : Mars 2006
    Messages : 4 087
    Points : 7 168
    Points
    7 168
    Billets dans le blog
    20
    Par défaut
    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.

  4. #4
    Expert éminent
    Avatar de Oliv-
    Homme Profil pro
    solution provider
    Inscrit en
    Mars 2006
    Messages
    4 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : solution provider

    Informations forums :
    Inscription : Mars 2006
    Messages : 4 087
    Points : 7 168
    Points
    7 168
    Billets dans le blog
    20
    Par défaut
    Bonjour,
    J'ai essayé en lancant un ps à partir d'osql même pb ?
    Merci d'avance

  5. #5
    Membre éprouvé
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    1 056
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 1 056
    Points : 1 216
    Points
    1 216
    Par défaut
    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.

  6. #6
    Expert éminent
    Avatar de Oliv-
    Homme Profil pro
    solution provider
    Inscrit en
    Mars 2006
    Messages
    4 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : solution provider

    Informations forums :
    Inscription : Mars 2006
    Messages : 4 087
    Points : 7 168
    Points
    7 168
    Billets dans le blog
    20
    Par défaut
    Bonjour Emmanuel,
    Tu n'as pas à t'excuser, merci de te pencher sur mon pb;

    ma procédure :
    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
    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 : 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
    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

  7. #7
    Expert éminent
    Avatar de Oliv-
    Homme Profil pro
    solution provider
    Inscrit en
    Mars 2006
    Messages
    4 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : solution provider

    Informations forums :
    Inscription : Mars 2006
    Messages : 4 087
    Points : 7 168
    Points
    7 168
    Billets dans le blog
    20
    Par défaut
    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

  8. #8
    Membre éprouvé
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    1 056
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 1 056
    Points : 1 216
    Points
    1 216
    Par défaut
    ---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 : Sélectionner tout - Visualiser dans une fenêtre à part
    @Sinistre_id int=0, @Sin_RefCourtier varchar(16)=''

    Quand tu lances

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ps_sinistre_gan_extranet_Edi_ps 94697,'6.58212830'
    tu n'as pas le résultat escompté ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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.

  9. #9
    Expert éminent
    Avatar de Oliv-
    Homme Profil pro
    solution provider
    Inscrit en
    Mars 2006
    Messages
    4 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : solution provider

    Informations forums :
    Inscription : Mars 2006
    Messages : 4 087
    Points : 7 168
    Points
    7 168
    Billets dans le blog
    20
    Par défaut
    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


    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

  10. #10
    Expert éminent
    Avatar de Oliv-
    Homme Profil pro
    solution provider
    Inscrit en
    Mars 2006
    Messages
    4 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : solution provider

    Informations forums :
    Inscription : Mars 2006
    Messages : 4 087
    Points : 7 168
    Points
    7 168
    Billets dans le blog
    20
    Par défaut

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

    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
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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...

Discussions similaires

  1. [débutant] problème affichage données table ds TDBGrid
    Par lidouka dans le forum Composants VCL
    Réponses: 1
    Dernier message: 16/12/2005, 13h50
  2. Problème avec une table
    Par Paulinho dans le forum SQL Procédural
    Réponses: 4
    Dernier message: 15/12/2005, 10h17
  3. Problème: trop de tables ouvertes
    Par DrSlump dans le forum Bases de données
    Réponses: 5
    Dernier message: 05/06/2005, 20h01
  4. Problème d'alter table dans une procédure stockée
    Par Oluha dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 16/03/2005, 09h19
  5. Problème avec mes tables de relation...
    Par mmike dans le forum PostgreSQL
    Réponses: 4
    Dernier message: 02/06/2003, 15h16

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo