Qual è la procedura consigliata per FTP da una procedura memorizzata di SQL Server 2005?

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

  •  08-06-2019
  •  | 
  •  

Domanda

Qual è il metodo migliore per eseguire comandi FTP da una procedura memorizzata di SQL Server?attualmente usiamo qualcosa del genere:

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

Il problema è che il comando sembra riuscire anche se l'FTP si è concluso con un errore.Inoltre, l'uso di xp_cmdshell richiede permessi speciali e può lasciare spazio a problemi di sicurezza.

È stato utile?

Soluzione

Se stai utilizzando SQL 2005, puoi farlo in un assembly di integrazione CLR e utilizzare le classi FTP nello spazio dei nomi System.Net per creare un semplice client FTP.

Trarrai vantaggio dalla possibilità di intercettare e gestire le eccezioni e ridurre il rischio per la sicurezza derivante dall'utilizzo di xp_cmdshell.

Solo alcuni pensieri.

Altri suggerimenti

Un'altra possibilità è utilizzare DTS o Integration Services (DTS per SQL Server 7 o 2000, SSIS per 2005 o versioni successive).Entrambi sono di Microsoft, inclusi nell'installazione di Sql Server (almeno nell'edizione Standard) e hanno un'attività FTP e sono progettati per lavori di importazione/esportazione da Sql Server.

Se è necessario eseguire FTP dall'interno del database, sceglierei un assembly .NET come suggerito da Kevin.Ciò fornirebbe il massimo controllo sul processo, inoltre saresti in grado di registrare messaggi di errore significativi in ​​una tabella per la reportistica.

Un'altra opzione sarebbe quella di scrivere un'app da riga di comando che legga il database per i comandi da eseguire.È quindi possibile definire un'attività pianificata per chiamare l'app della riga di comando ogni minuto o qualunque sia il periodo di polling necessario.Sarebbe più sicuro che abilitare il supporto CLR nel server del database.

Kev ha pubblicato un esempio qui che implementa il suo suggerimento di "fare questa operazione in un assembly di integrazione CLR e utilizzare le classi FTP nello spazio dei nomi System.Net per creare un semplice client FTP".

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top