¿Cuál es la mejor práctica para FTP desde un procedimiento almacenado de SQL Server 2005?

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

  •  08-06-2019
  •  | 
  •  

Pregunta

¿Cuál es el mejor método para ejecutar comandos FTP desde un procedimiento almacenado de SQL Server?actualmente usamos algo como esto:

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

El problema es que el comando parece tener éxito incluso si el FTP finalizó con error.Asimismo, el uso de xp_cmdshell requiere permisos especiales y puede dejar espacio para problemas de seguridad.

¿Fue útil?

Solución

Si está ejecutando SQL 2005, puede hacer esto en un ensamblado de integración CLR y usar las clases FTP en el espacio de nombres System.Net para crear un cliente FTP simple.

Se beneficiaría de poder detectar y manejar excepciones y reducir el riesgo de seguridad de tener que usar xp_cmdshell.

Sólo algunas ideas.

Otros consejos

Otra posibilidad es utilizar DTS o Integration Services (DTS para SQL Server 7 o 2000, SSIS para 2005 o superior).Ambos son de Microsoft, se incluyen en la instalación de Sql Server (al menos en la edición Standard) y tienen una tarea FTP y están diseñados para trabajos de importación/exportación desde Sql Server.

Si necesita realizar FTP desde la base de datos, entonces optaría por un ensamblado .NET como sugirió Kevin.Eso proporcionaría el mayor control sobre el proceso y, además, podría registrar mensajes de error significativos en una tabla para generar informes.

Otra opción sería escribir una aplicación de línea de comandos que lea la base de datos para ejecutar los comandos.Luego, podría definir una tarea programada para llamar a esa aplicación de línea de comando cada minutos o cualquiera que sea el período de sondeo.Eso sería más seguro que habilitar la compatibilidad con CLR en el servidor de la base de datos.

Kev publicó un ejemplo aqui que implementa su sugerencia de "hacer esto en un ensamblaje de integración CLR y usar las clases FTP en el espacio de nombres System.Net para construir un cliente FTP simple".

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top