2008-08-07 61 views
10

从SQL Server存储过程执行FTP命令的最佳方法是什么?我们目前使用的是这样的:来自SQL Server 2005存储过程的FTP的最佳做法是什么?

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

的问题是,该命令似乎成功,即使在FTP中出错而结束。此外,使用xp_cmdshell需要特殊权限,并可能为安全问题留出空间。

回答

4

如果您正在运行SQL 2005,则可以在CLR集成程序集中执行此操作,并使用System.Net命名空间中的FTP类来构建简单的FTP客户端。

您将受益于能够捕获和处理异常并降低必须使用xp_cmdshell的安全风险。

只是有些想法。

2

如果您需要从数据库内部进行FTP操作,那么我会像Kevin建议的那样使用.NET程序集。这将提供对流程的最大控制,并且您可以将有意义的错误消息记录到表格中进行报告。

另一种选择是编写一个命令行应用程序,该应用程序读取要运行的命令的数据库。然后,您可以定义一个计划任务,每分钟或任何轮询周期都需要调用该命令行应用程序。这比在数据库服务器中启用CLR支持更安全。

3

另一种可能性是使用DTS或Integration Services(DTS用于SQL Server 7或2000,SSIS用于2005或更高版本)。两者都来自Microsoft,包含在Sql Server安装中(至少在标准版中),并且具有FTP任务,并且专为从Sql Server导入/导出作业而设计。

1

Kev发布了一个示例over here,它实现了他的建议“在CLR集成程序集中执行此操作,并使用System.Net命名空间中的FTP类来构建简单的FTP客户端。

相关问题