2017-11-01 55 views
6

Tôi sử dụng thư viện EPPlus.dll để tạo tệp Excel trực tuyến cho tệp đính kèm và tạo thư trong Tác vụ Tập lệnh của gói SSIS.Làm thế nào để tránh trình duyệt thủ công DLL trong Thêm tham chiếu của tác vụ tập lệnh khi triển khai gói sản xuất?

Khi có yêu cầu thay đổi thư mới, tôi thực hiện thay đổi trong Tác vụ Tập lệnh trên máy cục bộ của tôi và gửi tệp gói (.dtsx) đã xây dựng cho nhóm DBA để triển khai.

Bây giờ mỗi khi phải hỏi đội DBA để chia sẻ màn hình máy chủ sản xuất với tôi, nơi tôi:

  1. Mở tập tin trong Visual Studio Dữ liệu công cụ giải pháp
  2. Duyệt đến vị trí dll
  3. Add Tham khảo dll trong Script Task.

Sau đó, họ nhập tệp gói trong MSDB từ nơi tham chiếu công việc được lên lịch và thực thi gói.

Nếu tôi không thực hiện bước trên, Tác vụ Tập lệnh sẽ gửi lỗi tham chiếu không tìm thấy.

Lỗi 1 Loại hoặc namespace tên 'OfficeOpenXml' không thể tìm được (là bạn thiếu một chỉ thị sử dụng hoặc tham khảo một hội?)

tôi đã vượt qua thách thức trong việc cài đặt DLL bên trong GAC đó là được tham chiếu trong Tác vụ Kịch bản bằng cách tự động tải bản lắp ráp như bên dưới '

public void Main() 
{ 
    AppDomain.CurrentDomain.AssemblyResolve += new ResolveEventHandler(CurrentDomain_AssemblyResolve); 

} 
    private System.Reflection.Assembly CurrentDomain_AssemblyResolve(object sender, ResolveEventArgs args) 
    { 
      return System.Reflection.Assembly.LoadFrom(System.IO.Path.Combine(strDLLPath, "EPPlus.dll")); 
    } 

Nhưng tôi không thể tìm thấy các bước để tránh duyệt theo cách thủ công và thêm tham chiếu DLL. Xin hãy giúp nhóm DBA miễn cưỡng/tránh chia sẻ màn hình.

Cách khác, cách thực hành chính xác/tốt nhất để nhận tệp gói được triển khai trên máy chủ trong đó dll bên ngoài được sử dụng nếu tôi không có quyền truy cập trực tiếp vào máy chủ sản xuất là gì.

+1

Không có cách nào để làm điều này từ các dịch vụ tích hợp, bạn nên làm việc trên phương pháp tiếp cận khác – Yahfoufi

+0

Các điều kiện tiên quyết mà một gói SSIS cần phải làm việc không thể thực hiện bên trong nó. Phải có một ứng dụng bên ngoài khác làm điều này. Tôi không nghĩ rằng bạn sẽ nhận được câu trả lời tốt hơn từ câu trả lời được cung cấp – Yahfoufi

+0

bất kỳ điều gì mới với sự cố này? – Yahfoufi

Trả lời

6

Tôi không nghĩ có cách trực tiếp để thực hiện điều đó từ gói dịch vụ tích hợp, vì cách giải quyết duy nhất bạn có thể làm là - (bạn đã sử dụng chức năng CurrentDomain_AssemblyResolve) - tải một hội đồng từ một vị trí thay vì cài đặt nó vào GAC.

Có 3 cách sử dụng dll tùy chỉnh về triển khai:

  • Giao rừng DLL để GAC
  • Sử dụng AssemblyResolve Chức năng
  • Sao chép tất cả các DLL để SQL Server DTS Assemblies thư mục (ví dụ cho SQL Server 2008: C:\Program Files\Microsoft SQL Server\100\DTS\Binn) và vào thư mục assembly .Net framework.

nếu sự cố là yêu cầu chia sẻ màn hình, bạn có thể tạo một trình hướng dẫn cài đặt nhỏ sao chép các dll này vào vị trí cụ thể và yêu cầu nhóm dba thực thi nó.

Cách giải quyết

Khi tìm kiếm cho vấn đề này, tôi tìm thấy một cách thú vị bằng cách sử dụng một dịch vụ Web thay vì dll trực tiếp, vì vậy bạn có thể tạo ra một dịch vụ web, trong đó có những phương pháp bạn đang sử dụng và thêm một Web tham khảo thay vì một hội đồng địa phương

Side Lưu ý: tôi đã không thử phương pháp này trước đây, nhưng tôi đang chỉ cố gắng để giúp

Liên kết hữu ích & Tài liệu tham khảo

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