Quelle est la meilleure pratique pour FTP à partir d’une procédure stockée SQL Server 2005 ?

StackOverflow https://stackoverflow.com/questions/4246

  •  08-06-2019
  •  | 
  •  

Question

Quelle est la meilleure méthode pour exécuter des commandes FTP à partir d’une procédure stockée SQL Server ?nous utilisons actuellement quelque chose comme ceci :

EXEC master..xp_cmdshell 'ftp -n -s:d:\ftp\ftpscript.xmt 172.1.1.1'

Le problème est que la commande semble réussir même si le FTP s'est terminé par une erreur.Aussi, l'utilisation de xp_cmdshell nécessite des autorisations spéciales et peut laisser place à des problèmes de sécurité.

Était-ce utile?

La solution

Si vous exécutez SQL 2005, vous pouvez le faire dans un assembly d'intégration CLR et utiliser les classes FTP dans l'espace de noms System.Net pour créer un client FTP simple.

Vous bénéficieriez de la possibilité d'intercepter et de gérer les exceptions et de réduire le risque de sécurité lié à l'utilisation de xp_cmdshell.

Juste quelques réflexions.

Autres conseils

Une autre possibilité consiste à utiliser DTS ou Integration Services (DTS pour SQL Server 7 ou 2000, SSIS pour 2005 ou supérieur).Les deux proviennent de Microsoft, sont inclus dans l'installation de Sql Server (au moins dans l'édition Standard) et disposent d'une tâche FTP et sont conçus pour les tâches d'importation/exportation à partir de Sql Server.

Si vous devez effectuer un FTP à partir de la base de données, j'opterais pour un assembly .NET comme l'a suggéré Kevin.Cela fournirait le plus grand contrôle sur le processus et vous seriez en mesure de consigner des messages d'erreur significatifs dans un tableau à des fins de reporting.

Une autre option serait d'écrire une application en ligne de commande qui lirait la base de données pour que les commandes soient exécutées.Vous pouvez ensuite définir une tâche planifiée pour appeler cette application de ligne de commande toutes les minutes ou quelle que soit la période d'interrogation nécessaire.Ce serait plus sécurisé que d'activer la prise en charge CLR sur le serveur de base de données.

Kev a posté un exemple par ici qui implémente sa suggestion de "faire cela dans un assembly d'intégration CLR et d'utiliser les classes FTP dans l'espace de noms System.Net pour créer un client FTP simple".

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top