Какова наилучшая практика для FTP из хранимой процедуры SQL Server 2005?

Каков наилучший метод для выполнения команд FTP из хранимой процедуры SQL Server? в настоящее время мы используем что-то вроде этого:

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

Проблема в том, что команда кажется успешной, даже если FTP завершился с ошибкой. Кроме того, использование xp_cmdshellтребует специальных разрешений и может оставить место для вопросов безопасности.

7.08.2008 01:09:04
3 ОТВЕТА
РЕШЕНИЕ

Если вы используете SQL 2005, вы можете сделать это в сборке интеграции CLR и использовать классы FTP в пространстве имен System.Net для создания простого клиента FTP.

Вы бы выиграли от возможности перехватывать и обрабатывать исключения и снижать риск безопасности при использовании xp_cmdshell.

Просто некоторые мысли.

5
7.08.2008 01:29:43

Если вам нужно сделать FTP из базы данных, я бы использовал сборку .NET, как предложил Кевин. Это обеспечит максимальный контроль над процессом, плюс вы сможете записывать значимые сообщения об ошибках в таблицу для отчетов.

Другой вариант - написать приложение командной строки, которое будет читать базу данных для запуска команд. Затем вы можете определить запланированное задание, которое будет вызывать это приложение командной строки каждую минуту или любой другой период опроса. Это было бы более безопасно, чем включение поддержки CLR на сервере базы данных.

2
7.08.2008 02:16:46

Другой возможностью является использование DTS или служб Integration Services (DTS для SQL Server 7 или 2000, SSIS для 2005 или выше). Оба из Microsoft, включены в установку Sql Server (по крайней мере, в Standard Edition) и имеют задачу FTP и предназначены для импорта / экспорта заданий из Sql Server.

3
11.08.2008 08:17:19