Lancement via PHP d'une procédure stockée utilisant un DTS
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:
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:
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 ... )