SQL Server 2005存储过程中FTP的最佳实践是什么?

15

什么是从SQL Server存储过程执行FTP命令的最佳方法?我们目前使用类似于以下内容:

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

问题在于即使FTP出现错误,该命令似乎也会成功。另外,使用xp_cmdshell需要特殊权限,并可能存在安全问题。

3个回答

5
如果你正在运行SQL 2005,你可以使用CLR集成程序集来完成这个操作,并使用System.Net命名空间中的FTP类来构建一个简单的FTP客户端。
你将受益于能够捕获和处理异常,并减少使用xp_cmdshell所带来的安全风险。
这只是一些想法。

3

另一个选择是使用DTS或Integration Services(SQL Server 7或2000使用DTS,2005或更高版本使用SSIS)。两者都来自Microsoft,在Sql Server安装中(至少在标准版中)包含FTP任务,并且专门用于从Sql Server导入/导出作业。


2
如果您需要在数据库内进行FTP操作,那么我建议使用.NET程序集,正如Kevin所建议的那样。这将提供对过程最大的控制,并且您将能够记录有意义的错误消息到一个表格中以供报告。
另一个选项是编写一个命令行应用程序来读取数据库中的命令以运行。然后,您可以定义一个定时任务来调用该命令行应用程序,每分钟或任何需要轮询周期的时间。这比在数据库服务器中启用CLR支持更安全。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接