OVH Cloud OVH Cloud

Je sèche...

8 réponses
Avatar
John
Bonjour,

j'ai un problème que je n'arrive pas à régler.

J'ai un programme vb qui lance un dts à peu près de cette façon

cmd.CommandText = "exportFactures "
Set cmd.ActiveConnection = cnA
cmd.CommandTimeout = 900 ' 15 minutes de timeout
cmd.CommandType = adCmdStoredProc
cmd.parameters.Refresh

cmd("@package") = PackageName
Set rst = cmd.Execute
rst.Close

où :
- PackageName est le nom d'un lot DTS
- la SP exportFacture est la suivante

CREATE PROCEDURE dbo.exportFactures

@package varchar(40)

as

declare @sql varchar(500)

set @sql='exec master.dbo.xp_cmdshell '+''''+'DTSRun.exe /S localhost /U
utilisateur/P password /N '+@package+''''

execute (@sql)
GO


Le lot DTS ne fait qu'établir une connexion avec la base de données et
écrire le contenu d'une table dans un fichier texte nommé et spécifique


Le problème est que rien n'est écrit dans la fichier text.

Pourtant :
- si je lance le DTS directement cela fonctionne et, de plus, sur mon
serveur de developpement cela fonctionne aussi en passant par l'applicatif
vb.

J'avoue que je ne sais plus trop où chercher l'erreur.

Merci

8 réponses

Avatar
Romelard Fabrice [MVP]
Bonjour,

Le compte NT faisant fonctionner SQL Server Agent a-t'il le droit d'écrire
(ou de créer) le fichier voulu.
Lors que vous l'exécutez à la main, vous utilisez votre contexte de
sécurité, ce qui n'est pas forcément le cas avec le planificateur.

--
Cordialement.

Romelard Fabrice [MVP]

"John" a écrit dans le message de news:
%
Bonjour,

j'ai un problème que je n'arrive pas à régler.

J'ai un programme vb qui lance un dts à peu près de cette façon

cmd.CommandText = "exportFactures "
Set cmd.ActiveConnection = cnA
cmd.CommandTimeout = 900 ' 15 minutes de timeout
cmd.CommandType = adCmdStoredProc
cmd.parameters.Refresh

cmd("@package") = PackageName
Set rst = cmd.Execute
rst.Close

où :
- PackageName est le nom d'un lot DTS
- la SP exportFacture est la suivante

CREATE PROCEDURE dbo.exportFactures

@package varchar(40)

as

declare @sql varchar(500)

set @sql='exec master.dbo.xp_cmdshell '+''''+'DTSRun.exe /S localhost /U
utilisateur/P password /N '+@package+''''

execute (@sql)
GO


Le lot DTS ne fait qu'établir une connexion avec la base de données et
écrire le contenu d'une table dans un fichier texte nommé et spécifique


Le problème est que rien n'est écrit dans la fichier text.

Pourtant :
- si je lance le DTS directement cela fonctionne et, de plus, sur mon
serveur de developpement cela fonctionne aussi en passant par l'applicatif
vb.

J'avoue que je ne sais plus trop où chercher l'erreur.

Merci




Avatar
Christian Robert
Là, il s'agirait plutôt du compte de service de Sql Server

Il faut d'une part que vous soyez connecté en tant que sysadmin, d'autre
part que le compte de service de SQL Server (service MSSQLSERVER) est bien le
droit d'écrire ce fichier.

D'autre part il serait judicieux de lancer cette commande dans l'analyseur
de requête en se loggant avec le même compte pour avoir les messages d'erreur.

--
Cordialement

Christian Robert
Consultant - Formateur chez Winwise
MCT - MCDBA - MCSD


"Romelard Fabrice [MVP]" a écrit :

Bonjour,

Le compte NT faisant fonctionner SQL Server Agent a-t'il le droit d'écrire
(ou de créer) le fichier voulu.
Lors que vous l'exécutez à la main, vous utilisez votre contexte de
sécurité, ce qui n'est pas forcément le cas avec le planificateur.

--
Cordialement.

Romelard Fabrice [MVP]

"John" a écrit dans le message de news:
%
> Bonjour,
>
> j'ai un problème que je n'arrive pas à régler.
>
> J'ai un programme vb qui lance un dts à peu près de cette façon
>
> cmd.CommandText = "exportFactures "
> Set cmd.ActiveConnection = cnA
> cmd.CommandTimeout = 900 ' 15 minutes de timeout
> cmd.CommandType = adCmdStoredProc
> cmd.parameters.Refresh
>
> cmd("@package") = PackageName
> Set rst = cmd.Execute
> rst.Close
>
> où :
> - PackageName est le nom d'un lot DTS
> - la SP exportFacture est la suivante
>
> CREATE PROCEDURE dbo.exportFactures
>
> @package varchar(40)
>
> as
>
> declare @sql varchar(500)
>
> set @sql='exec master.dbo.xp_cmdshell '+''''+'DTSRun.exe /S localhost /U
> utilisateur/P password /N '+@package+''''
>
> execute (@sql)
> GO
>
>
> Le lot DTS ne fait qu'établir une connexion avec la base de données et
> écrire le contenu d'une table dans un fichier texte nommé et spécifique
>
>
> Le problème est que rien n'est écrit dans la fichier text.
>
> Pourtant :
> - si je lance le DTS directement cela fonctionne et, de plus, sur mon
> serveur de developpement cela fonctionne aussi en passant par l'applicatif
> vb.
>
> J'avoue que je ne sais plus trop où chercher l'erreur.
>
> Merci
>
>





Avatar
jack
A prori oui puisque c'est le compte administrateur du domaine.
Le fichier est écrit en local sur chaque poste qui le lance.
Y a-t-il quelque part un fichier de log pour ces événements qui me
permettrait de trouver un message d'erreur ?

merci

"Romelard Fabrice [MVP]" wrote in message
news:%
Bonjour,

Le compte NT faisant fonctionner SQL Server Agent a-t'il le droit d'écrire
(ou de créer) le fichier voulu.
Lors que vous l'exécutez à la main, vous utilisez votre contexte de
sécurité, ce qui n'est pas forcément le cas avec le planificateur.

--
Cordialement.

Romelard Fabrice [MVP]

"John" a écrit dans le message de news:
%
> Bonjour,
>
> j'ai un problème que je n'arrive pas à régler.
>
> J'ai un programme vb qui lance un dts à peu près de cette façon
>
> cmd.CommandText = "exportFactures "
> Set cmd.ActiveConnection = cnA
> cmd.CommandTimeout = 900 ' 15 minutes de timeout
> cmd.CommandType = adCmdStoredProc
> cmd.parameters.Refresh
>
> cmd("@package") = PackageName
> Set rst = cmd.Execute
> rst.Close
>
> où :
> - PackageName est le nom d'un lot DTS
> - la SP exportFacture est la suivante
>
> CREATE PROCEDURE dbo.exportFactures
>
> @package varchar(40)
>
> as
>
> declare @sql varchar(500)
>
> set @sql='exec master.dbo.xp_cmdshell '+''''+'DTSRun.exe /S localhost /U
> utilisateur/P password /N '+@package+''''
>
> execute (@sql)
> GO
>
>
> Le lot DTS ne fait qu'établir une connexion avec la base de données et
> écrire le contenu d'une table dans un fichier texte nommé et spécifique
>
>
> Le problème est que rien n'est écrit dans la fichier text.
>
> Pourtant :
> - si je lance le DTS directement cela fonctionne et, de plus, sur mon
> serveur de developpement cela fonctionne aussi en passant par


l'applicatif
> vb.
>
> J'avoue que je ne sais plus trop où chercher l'erreur.
>
> Merci
>
>




Avatar
John
Bonjour,

lorsque je le lance via l'analyseur de requêtes j'obtiens cela comme message
(quel que soit le compte qui lance le dts)

DTSRun: Loading...
DTSRun: Executing...
DTSRun OnStart: DTSStep_DTSDataPumpTask_1
DTSRun OnError: DTSStep_DTSDataPumpTask_1, Error = -2147467259 (80004005)
Error string: Error opening datafile: The system cannot find the path
specified.

Error source: Microsoft Data Transformation Services Flat File Rowset
Provider
Help file: DTSFFile.hlp
Help context: 0

Error Detail Records:

Error: 3 (3); Provider Error: 3 (3)
Error string: Error opening datafile: The system cannot find the path
specified.

Error source: Microsoft Data Transformation Services Flat File Rowset
Provider
Help file: DTSFFile.hlp
Help context: 0

DTSRun OnFinish: DTSStep_DTSDataPumpTask_1
DTSRun: Package execution complete.
NULL


Merci

"Christian Robert" (sansspam)> wrote in message
news:
Là, il s'agirait plutôt du compte de service de Sql Server

Il faut d'une part que vous soyez connecté en tant que sysadmin, d'autre
part que le compte de service de SQL Server (service MSSQLSERVER) est bien


le
droit d'écrire ce fichier.

D'autre part il serait judicieux de lancer cette commande dans l'analyseur
de requête en se loggant avec le même compte pour avoir les messages


d'erreur.

--
Cordialement

Christian Robert
Consultant - Formateur chez Winwise
MCT - MCDBA - MCSD


"Romelard Fabrice [MVP]" a écrit :

> Bonjour,
>
> Le compte NT faisant fonctionner SQL Server Agent a-t'il le droit


d'écrire
> (ou de créer) le fichier voulu.
> Lors que vous l'exécutez à la main, vous utilisez votre contexte de
> sécurité, ce qui n'est pas forcément le cas avec le planificateur.
>
> --
> Cordialement.
>
> Romelard Fabrice [MVP]
>
> "John" a écrit dans le message de news:
> %
> > Bonjour,
> >
> > j'ai un problème que je n'arrive pas à régler.
> >
> > J'ai un programme vb qui lance un dts à peu près de cette façon
> >
> > cmd.CommandText = "exportFactures "
> > Set cmd.ActiveConnection = cnA
> > cmd.CommandTimeout = 900 ' 15 minutes de timeout
> > cmd.CommandType = adCmdStoredProc
> > cmd.parameters.Refresh
> >
> > cmd("@package") = PackageName
> > Set rst = cmd.Execute
> > rst.Close
> >
> > où :
> > - PackageName est le nom d'un lot DTS
> > - la SP exportFacture est la suivante
> >
> > CREATE PROCEDURE dbo.exportFactures
> >
> > @package varchar(40)
> >
> > as
> >
> > declare @sql varchar(500)
> >
> > set @sql='exec master.dbo.xp_cmdshell '+''''+'DTSRun.exe /S localhost


/U
> > utilisateur/P password /N '+@package+''''
> >
> > execute (@sql)
> > GO
> >
> >
> > Le lot DTS ne fait qu'établir une connexion avec la base de données et
> > écrire le contenu d'une table dans un fichier texte nommé et


spécifique
> >
> >
> > Le problème est que rien n'est écrit dans la fichier text.
> >
> > Pourtant :
> > - si je lance le DTS directement cela fonctionne et, de plus, sur mon
> > serveur de developpement cela fonctionne aussi en passant par


l'applicatif
> > vb.
> >
> > J'avoue que je ne sais plus trop où chercher l'erreur.
> >
> > Merci
> >
> >
>
>
>


Avatar
John
Donc après lecture du message d'erreur le problème vient du fait que le dts
qui est lancé sur le serveur n'arrive pas à écrire dans un fichier situé sur
un poste local.
Ce qui semble à peu normal.
Existe-t-il un moyen de faire en sorte que le dts lancé par vb écrive dans
un fichier local ?

Merci

"Christian Robert" (sansspam)> wrote in message
news:
Là, il s'agirait plutôt du compte de service de Sql Server

Il faut d'une part que vous soyez connecté en tant que sysadmin, d'autre
part que le compte de service de SQL Server (service MSSQLSERVER) est bien


le
droit d'écrire ce fichier.

D'autre part il serait judicieux de lancer cette commande dans l'analyseur
de requête en se loggant avec le même compte pour avoir les messages


d'erreur.

--
Cordialement

Christian Robert
Consultant - Formateur chez Winwise
MCT - MCDBA - MCSD


"Romelard Fabrice [MVP]" a écrit :

> Bonjour,
>
> Le compte NT faisant fonctionner SQL Server Agent a-t'il le droit


d'écrire
> (ou de créer) le fichier voulu.
> Lors que vous l'exécutez à la main, vous utilisez votre contexte de
> sécurité, ce qui n'est pas forcément le cas avec le planificateur.
>
> --
> Cordialement.
>
> Romelard Fabrice [MVP]
>
> "John" a écrit dans le message de news:
> %
> > Bonjour,
> >
> > j'ai un problème que je n'arrive pas à régler.
> >
> > J'ai un programme vb qui lance un dts à peu près de cette façon
> >
> > cmd.CommandText = "exportFactures "
> > Set cmd.ActiveConnection = cnA
> > cmd.CommandTimeout = 900 ' 15 minutes de timeout
> > cmd.CommandType = adCmdStoredProc
> > cmd.parameters.Refresh
> >
> > cmd("@package") = PackageName
> > Set rst = cmd.Execute
> > rst.Close
> >
> > où :
> > - PackageName est le nom d'un lot DTS
> > - la SP exportFacture est la suivante
> >
> > CREATE PROCEDURE dbo.exportFactures
> >
> > @package varchar(40)
> >
> > as
> >
> > declare @sql varchar(500)
> >
> > set @sql='exec master.dbo.xp_cmdshell '+''''+'DTSRun.exe /S localhost


/U
> > utilisateur/P password /N '+@package+''''
> >
> > execute (@sql)
> > GO
> >
> >
> > Le lot DTS ne fait qu'établir une connexion avec la base de données et
> > écrire le contenu d'une table dans un fichier texte nommé et


spécifique
> >
> >
> > Le problème est que rien n'est écrit dans la fichier text.
> >
> > Pourtant :
> > - si je lance le DTS directement cela fonctionne et, de plus, sur mon
> > serveur de developpement cela fonctionne aussi en passant par


l'applicatif
> > vb.
> >
> > J'avoue que je ne sais plus trop où chercher l'erreur.
> >
> > Merci
> >
> >
>
>
>


Avatar
Christian Robert
L'éxecution d'un lot dts via DTSrun se fait toujours dans le contexte du
serveur...

Le mieux en fait est de passer toujours par des chemin UNC, par exemple :
monserveurmonpartagemonfichier

Ca marchera en local ou sur le serveur à condition de lui donner des droit
sur le partage... çà évite les problèmes de DTS à ce niveau là...

Autre solution passer le chemin sous forme de paramètre du lot...

--
Cordialement

Christian Robert
Consultant - Formateur chez Winwise
MCT - MCDBA - MCSD


"John" a écrit :

Donc après lecture du message d'erreur le problème vient du fait que le dts
qui est lancé sur le serveur n'arrive pas à écrire dans un fichier situé sur
un poste local.
Ce qui semble à peu normal.
Existe-t-il un moyen de faire en sorte que le dts lancé par vb écrive dans
un fichier local ?

Merci

"Christian Robert" (sansspam)> wrote in message
news:
> Là, il s'agirait plutôt du compte de service de Sql Server
>
> Il faut d'une part que vous soyez connecté en tant que sysadmin, d'autre
> part que le compte de service de SQL Server (service MSSQLSERVER) est bien
le
> droit d'écrire ce fichier.
>
> D'autre part il serait judicieux de lancer cette commande dans l'analyseur
> de requête en se loggant avec le même compte pour avoir les messages
d'erreur.
>
> --
> Cordialement
>
> Christian Robert
> Consultant - Formateur chez Winwise
> MCT - MCDBA - MCSD
>
>
> "Romelard Fabrice [MVP]" a écrit :
>
> > Bonjour,
> >
> > Le compte NT faisant fonctionner SQL Server Agent a-t'il le droit
d'écrire
> > (ou de créer) le fichier voulu.
> > Lors que vous l'exécutez à la main, vous utilisez votre contexte de
> > sécurité, ce qui n'est pas forcément le cas avec le planificateur.
> >
> > --
> > Cordialement.
> >
> > Romelard Fabrice [MVP]
> >
> > "John" a écrit dans le message de news:
> > %
> > > Bonjour,
> > >
> > > j'ai un problème que je n'arrive pas à régler.
> > >
> > > J'ai un programme vb qui lance un dts à peu près de cette façon
> > >
> > > cmd.CommandText = "exportFactures "
> > > Set cmd.ActiveConnection = cnA
> > > cmd.CommandTimeout = 900 ' 15 minutes de timeout
> > > cmd.CommandType = adCmdStoredProc
> > > cmd.parameters.Refresh
> > >
> > > cmd("@package") = PackageName
> > > Set rst = cmd.Execute
> > > rst.Close
> > >
> > > où :
> > > - PackageName est le nom d'un lot DTS
> > > - la SP exportFacture est la suivante
> > >
> > > CREATE PROCEDURE dbo.exportFactures
> > >
> > > @package varchar(40)
> > >
> > > as
> > >
> > > declare @sql varchar(500)
> > >
> > > set @sql='exec master.dbo.xp_cmdshell '+''''+'DTSRun.exe /S localhost
/U
> > > utilisateur/P password /N '+@package+''''
> > >
> > > execute (@sql)
> > > GO
> > >
> > >
> > > Le lot DTS ne fait qu'établir une connexion avec la base de données et
> > > écrire le contenu d'une table dans un fichier texte nommé et
spécifique
> > >
> > >
> > > Le problème est que rien n'est écrit dans la fichier text.
> > >
> > > Pourtant :
> > > - si je lance le DTS directement cela fonctionne et, de plus, sur mon
> > > serveur de developpement cela fonctionne aussi en passant par
l'applicatif
> > > vb.
> > >
> > > J'avoue que je ne sais plus trop où chercher l'erreur.
> > >
> > > Merci
> > >
> > >
> >
> >
> >





Avatar
John
Merci,

mais d'après ce que je comprends là, on va écrire sur le serveur.
Ce que je souhaiterais c'est que le fichier soit écrit en local sur le poste
client qui le lance.
Pas toujours le même poste client d'ailleurs.
Que ce fichier soit dans c:monrepertoiremonfichier sur le poste local.

C'est possible ?


"Christian Robert" (sansspam)> wrote in message
news:
L'éxecution d'un lot dts via DTSrun se fait toujours dans le contexte du
serveur...

Le mieux en fait est de passer toujours par des chemin UNC, par exemple :
monserveurmonpartagemonfichier

Ca marchera en local ou sur le serveur à condition de lui donner des droit
sur le partage... çà évite les problèmes de DTS à ce niveau là...

Autre solution passer le chemin sous forme de paramètre du lot...

--
Cordialement

Christian Robert
Consultant - Formateur chez Winwise
MCT - MCDBA - MCSD


"John" a écrit :

> Donc après lecture du message d'erreur le problème vient du fait que le


dts
> qui est lancé sur le serveur n'arrive pas à écrire dans un fichier situé


sur
> un poste local.
> Ce qui semble à peu normal.
> Existe-t-il un moyen de faire en sorte que le dts lancé par vb écrive


dans
> un fichier local ?
>
> Merci
>
> "Christian Robert" (sansspam)> wrote in


message
> news:
> > Là, il s'agirait plutôt du compte de service de Sql Server
> >
> > Il faut d'une part que vous soyez connecté en tant que sysadmin,


d'autre
> > part que le compte de service de SQL Server (service MSSQLSERVER) est


bien
> le
> > droit d'écrire ce fichier.
> >
> > D'autre part il serait judicieux de lancer cette commande dans


l'analyseur
> > de requête en se loggant avec le même compte pour avoir les messages
> d'erreur.
> >
> > --
> > Cordialement
> >
> > Christian Robert
> > Consultant - Formateur chez Winwise
> > MCT - MCDBA - MCSD
> >
> >
> > "Romelard Fabrice [MVP]" a écrit :
> >
> > > Bonjour,
> > >
> > > Le compte NT faisant fonctionner SQL Server Agent a-t'il le droit
> d'écrire
> > > (ou de créer) le fichier voulu.
> > > Lors que vous l'exécutez à la main, vous utilisez votre contexte de
> > > sécurité, ce qui n'est pas forcément le cas avec le planificateur.
> > >
> > > --
> > > Cordialement.
> > >
> > > Romelard Fabrice [MVP]
> > >
> > > "John" a écrit dans le message de news:
> > > %
> > > > Bonjour,
> > > >
> > > > j'ai un problème que je n'arrive pas à régler.
> > > >
> > > > J'ai un programme vb qui lance un dts à peu près de cette façon
> > > >
> > > > cmd.CommandText = "exportFactures "
> > > > Set cmd.ActiveConnection = cnA
> > > > cmd.CommandTimeout = 900 ' 15 minutes de timeout
> > > > cmd.CommandType = adCmdStoredProc
> > > > cmd.parameters.Refresh
> > > >
> > > > cmd("@package") = PackageName
> > > > Set rst = cmd.Execute
> > > > rst.Close
> > > >
> > > > où :
> > > > - PackageName est le nom d'un lot DTS
> > > > - la SP exportFacture est la suivante
> > > >
> > > > CREATE PROCEDURE dbo.exportFactures
> > > >
> > > > @package varchar(40)
> > > >
> > > > as
> > > >
> > > > declare @sql varchar(500)
> > > >
> > > > set @sql='exec master.dbo.xp_cmdshell '+''''+'DTSRun.exe /S


localhost
> /U
> > > > utilisateur/P password /N '+@package+''''
> > > >
> > > > execute (@sql)
> > > > GO
> > > >
> > > >
> > > > Le lot DTS ne fait qu'établir une connexion avec la base de


données et
> > > > écrire le contenu d'une table dans un fichier texte nommé et
> spécifique
> > > >
> > > >
> > > > Le problème est que rien n'est écrit dans la fichier text.
> > > >
> > > > Pourtant :
> > > > - si je lance le DTS directement cela fonctionne et, de plus, sur


mon
> > > > serveur de developpement cela fonctionne aussi en passant par
> l'applicatif
> > > > vb.
> > > >
> > > > J'avoue que je ne sais plus trop où chercher l'erreur.
> > > >
> > > > Merci
> > > >
> > > >
> > >
> > >
> > >
>
>
>


Avatar
Christian Robert
Ca me parrait difficille à faire...

De toute manière il faut que le serveur puisse écrire sur le poste client,
tout se réalise dansle cadre du contexte du serveur, il doit donc :
- Connaitre le nom ou l'adresse du poste... En utilisant HOST_NAME() on peut
avoir le nom du poste client...
- Avoir des droits d'écriture et la possibilité d'écrire... il faut donc y
créer un partage avec des droits suffisant pour le compte de l'agent SQL ou
du service SQL suivant celui-qui execute le lot... Ici c'est MSSQLSERVER,
c'est le service SQL qui l'execute...

Franchement, si j'étais vous j'écrirais sur un serveur, par exemple un
serveur de fichier ou chaque utilisateur aurait son répertoire mes
documents...

--
Cordialement

Christian Robert
Consultant - Formateur chez Winwise
MCT - MCDBA - MCSD


"John" a écrit :

Merci,

mais d'après ce que je comprends là, on va écrire sur le serveur.
Ce que je souhaiterais c'est que le fichier soit écrit en local sur le poste
client qui le lance.
Pas toujours le même poste client d'ailleurs.
Que ce fichier soit dans c:monrepertoiremonfichier sur le poste local.

C'est possible ?


"Christian Robert" (sansspam)> wrote in message
news:
> L'éxecution d'un lot dts via DTSrun se fait toujours dans le contexte du
> serveur...
>
> Le mieux en fait est de passer toujours par des chemin UNC, par exemple :
> monserveurmonpartagemonfichier
>
> Ca marchera en local ou sur le serveur à condition de lui donner des droit
> sur le partage... çà évite les problèmes de DTS à ce niveau là...
>
> Autre solution passer le chemin sous forme de paramètre du lot...
>
> --
> Cordialement
>
> Christian Robert
> Consultant - Formateur chez Winwise
> MCT - MCDBA - MCSD
>
>
> "John" a écrit :
>
> > Donc après lecture du message d'erreur le problème vient du fait que le
dts
> > qui est lancé sur le serveur n'arrive pas à écrire dans un fichier situé
sur
> > un poste local.
> > Ce qui semble à peu normal.
> > Existe-t-il un moyen de faire en sorte que le dts lancé par vb écrive
dans
> > un fichier local ?
> >
> > Merci
> >
> > "Christian Robert" (sansspam)> wrote in
message
> > news:
> > > Là, il s'agirait plutôt du compte de service de Sql Server
> > >
> > > Il faut d'une part que vous soyez connecté en tant que sysadmin,
d'autre
> > > part que le compte de service de SQL Server (service MSSQLSERVER) est
bien
> > le
> > > droit d'écrire ce fichier.
> > >
> > > D'autre part il serait judicieux de lancer cette commande dans
l'analyseur
> > > de requête en se loggant avec le même compte pour avoir les messages
> > d'erreur.
> > >
> > > --
> > > Cordialement
> > >
> > > Christian Robert
> > > Consultant - Formateur chez Winwise
> > > MCT - MCDBA - MCSD
> > >
> > >
> > > "Romelard Fabrice [MVP]" a écrit :
> > >
> > > > Bonjour,
> > > >
> > > > Le compte NT faisant fonctionner SQL Server Agent a-t'il le droit
> > d'écrire
> > > > (ou de créer) le fichier voulu.
> > > > Lors que vous l'exécutez à la main, vous utilisez votre contexte de
> > > > sécurité, ce qui n'est pas forcément le cas avec le planificateur.
> > > >
> > > > --
> > > > Cordialement.
> > > >
> > > > Romelard Fabrice [MVP]
> > > >
> > > > "John" a écrit dans le message de news:
> > > > %
> > > > > Bonjour,
> > > > >
> > > > > j'ai un problème que je n'arrive pas à régler.
> > > > >
> > > > > J'ai un programme vb qui lance un dts à peu près de cette façon
> > > > >
> > > > > cmd.CommandText = "exportFactures "
> > > > > Set cmd.ActiveConnection = cnA
> > > > > cmd.CommandTimeout = 900 ' 15 minutes de timeout
> > > > > cmd.CommandType = adCmdStoredProc
> > > > > cmd.parameters.Refresh
> > > > >
> > > > > cmd("@package") = PackageName
> > > > > Set rst = cmd.Execute
> > > > > rst.Close
> > > > >
> > > > > où :
> > > > > - PackageName est le nom d'un lot DTS
> > > > > - la SP exportFacture est la suivante
> > > > >
> > > > > CREATE PROCEDURE dbo.exportFactures
> > > > >
> > > > > @package varchar(40)
> > > > >
> > > > > as
> > > > >
> > > > > declare @sql varchar(500)
> > > > >
> > > > > set @sql='exec master.dbo.xp_cmdshell '+''''+'DTSRun.exe /S
localhost
> > /U
> > > > > utilisateur/P password /N '+@package+''''
> > > > >
> > > > > execute (@sql)
> > > > > GO
> > > > >
> > > > >
> > > > > Le lot DTS ne fait qu'établir une connexion avec la base de
données et
> > > > > écrire le contenu d'une table dans un fichier texte nommé et
> > spécifique
> > > > >
> > > > >
> > > > > Le problème est que rien n'est écrit dans la fichier text.
> > > > >
> > > > > Pourtant :
> > > > > - si je lance le DTS directement cela fonctionne et, de plus, sur
mon
> > > > > serveur de developpement cela fonctionne aussi en passant par
> > l'applicatif
> > > > > vb.
> > > > >
> > > > > J'avoue que je ne sais plus trop où chercher l'erreur.
> > > > >
> > > > > Merci
> > > > >
> > > > >
> > > >
> > > >
> > > >
> >
> >
> >