2011-07-13 34 views
5

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ó:

enter image description here

+0

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. –

Trả lời

7

On 64-bit Hệ điều hành, bạn có thể tìm thấy các tập tin Microsoft.SQLServer.ManagedDTS.dll trong đường dẫn sau:

C:\Program Files (x86)\Microsoft SQL Server\100\SDK\Assemblies

On 32-bit Hệ điều hành, bạn có thể tìm thấy các tập tin Microsoft.SQLServer.ManagedDTS.dll trong đường dẫn sau:

C:\Program Files\Microsoft SQL Server\100\SDK\Assemblies

Thư mục dưới Microsoft SQL Server đại diện SQL Server 2005.

Thư mục trong Microsoft SQL Server đại diện cho SQL Server 2008.

+0

Cảm ơn, Siva. Tôi đang chạy một hệ điều hành 64-bit và phiên bản 64-bit của SQL Server 2008. –

+2

Tôi biết đây là một thời gian dài đóng cửa, nhưng nếu bạn nhìn vào những đường dẫn và thư viện không có, cháy lên đĩa cài đặt SQL Server và cài đặt SDK. Chúng tôi chạy vào đó ngày hôm nay. – Mark

+1

Cài đặt lại công cụ máy khách SDK thông qua đĩa cài đặt đã hoạt động cho tôi. –

3

Chỉ cần một cập nhật nhỏ về câu trả lời sớm cho SQL2012

file DLL trong 110.

Bây giờ ngay cả sau khi thêm tài liệu tham khảo, bạn sẽ nhận được lỗi tương tự nếu bạn xây dựng dự án của bạn với .Net3.5 hoặc các cấu hình cũ hơn.

cho SQL2012 bạn phải sử dụng .Net4.0 hoặc phiên bản mới hơn Visual Studio sẽ hiển thị cho bạn cùng lỗi.

1

Sau khi cài đặt SS2012, tập lệnh là gói ssis được phát triển trong ss2008r2 có lỗi được mô tả. Sau khi một số dự án cố gắng giải quyết, tôi đã cài đặt sdk ss2008r2, mở tất cả các tập lệnh và đóng, và mọi thứ đều ổn.

Cảm ơn Mark

+0

Làm việc cho tôi. Cảm ơn rất nhiều. –

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