Không có nhiệm vụ kiểm soát dòng tiêu chuẩn trong SSIS để tải xuống tệp qua HTTP. Tôi đã thử một số cách giải quyết (Execute Process wget, Script Task HttpClientConnection), nhưng đã đi đến kết luận rằng cách mạnh mẽ nhất và có thể tái sử dụng để thực hiện tác vụ này là tạo ra một thành phần tùy chỉnh.Không thể biên dịch thành phần SSIS; Thiếu hội trong Visual Studio 2008
Tôi đã cố thực hiện điều này bằng cách theo dõi Ray Gorski's guide nhưng đã gặp sự cố trong môi trường phát triển của mình.
Vấn đề là Visual Studio 2008 không nhận ra không gian tên Microsoft.SqlServer.Dts
. Nó than phiền với thông báo lỗi "Loại hoặc tên không gian tên 'Dts' không tồn tại trong không gian tên 'Microsoft.SqlServer' (là bạn thiếu một tham chiếu lắp ráp?)".
Tôi tìm thấy lời khuyên trên the MSDN forum cho biết bạn có thể thêm tham chiếu bằng cách thêm số điện thoại ManagedDTS.dll
tìm thấy trong C:\Program Files\Microsoft SQL Server\90\SDK\Assemblies\
, nhưng thư mục này không tồn tại trên hệ thống của tôi. Tôi nghĩ rằng điều này là do tôi đang sử dụng SQL Server 2008 chứ không phải SQL Server 2005.
Làm cách nào để khắc phục vấn đề này?
Đây là mã của tôi, dựa trên mẫu trong hướng dẫn của Ray Gorski. Không có mã ở đây để thực sự hoàn thành nhiệm vụ của tôi, chỉ là một bài trống, mà không biên dịch.
using System;
using Microsoft.SqlServer.Dts.Runtime;
using Microsoft.SqlServer.Dts.Runtime.Design;
namespace HTTPControlTask
{
[DtsTask(
Description = "HTTP",
DisplayName = "HTTP",
TaskContact = "Iain Elder",
TaskType = "SSIS Help Task",
RequiredProductLevel = DTSProductLevel.None)]
public class HTTPControlTask : Task, IDTSComponentPersist
{
}
}
Đây là một ảnh chụp màn hình của lỗi tôi thấy khi tôi cố gắng để biên dịch nó:
Cảm ơn bạn đã liên kết, Siva. Bây giờ sử dụng 'HTTPClientConnection' là tốt, bởi vì hai gói tôi thiết kế tải xuống tất cả dữ liệu của chúng chỉ từ một tệp. Nhưng có một số gói khác phải thực hiện nhiều yêu cầu HTTP để trích xuất tất cả dữ liệu của chúng, vì vậy tôi sẽ xem xét sử dụng 'WebClient' cho tác vụ này. –