2008-08-07 42 views
10

Phương pháp tốt nhất để thực hiện các lệnh FTP từ thủ tục lưu sẵn SQL Server là gì? chúng tôi hiện đang sử dụng một cái gì đó như thế này:Thực hành tốt nhất cho FTP từ thủ tục lưu trữ SQL Server 2005 là gì?

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

Vấn đề là lệnh có vẻ thành công ngay cả khi FTP kết thúc do lỗi. Ngoài ra, việc sử dụng xp_cmdshell yêu cầu các quyền đặc biệt và có thể để lại chỗ cho các sự cố bảo mật.

Trả lời

4

Nếu bạn đang chạy SQL 2005, bạn có thể làm điều này trong một hội nhập CLR và sử dụng các lớp FTP trong không gian tên System.Net để xây dựng một máy khách FTP đơn giản.

Bạn sẽ được hưởng lợi từ việc có thể bẫy và xử lý các ngoại lệ và giảm rủi ro bảo mật khi phải sử dụng xp_cmdshell.

Chỉ một số suy nghĩ.

2

Nếu bạn cần thực hiện FTP từ bên trong cơ sở dữ liệu, thì tôi sẽ đi với một hội đồng .NET như Kevin đã đề xuất. Điều đó sẽ cung cấp sự kiểm soát nhiều nhất đối với quy trình, cộng với bạn sẽ có thể ghi các thông báo lỗi có ý nghĩa vào một bảng để báo cáo.

Một tùy chọn khác là viết ứng dụng dòng lệnh đọc cơ sở dữ liệu để chạy các lệnh. Sau đó, bạn có thể xác định tác vụ được lên lịch để gọi ứng dụng dòng lệnh đó mỗi phút hoặc bất kỳ khoảng thời gian bỏ phiếu nào cần thiết. Điều đó sẽ an toàn hơn việc bật hỗ trợ CLR trong máy chủ cơ sở dữ liệu.

3

Một khả năng khác là sử dụng DTS hoặc Dịch vụ tích hợp (DTS cho SQL Server 7 hoặc 2000, SSIS cho năm 2005 trở lên). Cả hai đều là từ Microsoft, bao gồm trong việc cài đặt Sql Server (trong phiên bản Standard ít nhất) và có một nhiệm vụ FTP và được thiết kế cho các công việc xuất nhập khẩu từ Sql Server.

1

Kev đã đăng một ví dụ over here thực hiện đề xuất của mình để "thực hiện điều này trong hội nhập CLR và sử dụng các lớp FTP trong không gian tên System.Net để xây dựng một máy khách FTP đơn giản."

Các vấn đề liên quan