Bonjour,

Dans le cadre d'une appli' PHP, j'avais l'intention de développer pour un utilisateur censé administrer la mise à jour des données une page lui permettant de charger des tables de références avec des fichiers CSV.
J'ai donc un formulaire qui lui permet de charger les fichiers, puis dans le traitement du formulaire, je désirais lancer une procédure stockée (qui fonctionne si je la lance via EM) appelant elle-même un DTS (le DTS étant là pour charger automatiquement le fichier dans une table). Hélas, lorsque j'exécute ce formulaire ... rien ne se passe.

Dans PHP j'ai ceci :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
 
$statement = mssql_init("nom_sp",$ObjCnx);
/*Déplacement du fichier chargé au bon endroit pour que le DTS le trouve : j'ai testé ça fonctionne*/
$result = mssql_execute ($statement)
/*Affichage des résultats*/
 while ($row = mssql_fetch_assoc($result))
    print_r($row);
Et dans ma sp, j'ai :

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
 
CREATE PROCEDURE nom_sp
AS
 
BEGIN
  DECLARE @cmd AS varchar(255)
 
  TRUNCATE TABLE table_temp
 
  SET @cmd = 'DTSRUN /S "(local)" /U "sa" /E /N "NOM_DTS" /W "0" '
  SELECT @cmd
 
  EXEC master..xp_cmdshell @cmd
 
  EXEC sp_retraitement_donnees
 
END
GO
Il lance bien le chargement, mais rien ne se passe, et php m'affiche ensuite :

Array ( [computed] => DTSRUN /S "(local)" /U "sa" /E /N "NOM_DTS" /W "0" )

Pour info, sur d'autres pages j'arrive bien à exécuter des sp (qui lancent simplement des requêtes) avec les mêmes commandes ... C'est pour celà que je me demandais si, tout simplement, il n'est pas possible de lancer des DTS via PHP ...

Merci d'avance,

(Le serveur est sous SQL 2000 et je suis en PHP 5 ... )