2014-04-10 20 views
6

Tôi có một tác vụ tập lệnh chuyển một số thông qua trong đối tượng từ máy chủ này sang máy chủ khác. Đây là mãGói SSIS chạy tốt trong Visual Studio nhưng không thành công khi chạy thủ công trên hộp được triển khai

public void Main() 
     { 
      try 
      { 
      string schemaName = Dts.Variables["$Package::SchemaName"].Value.ToString(); 
      string objectName = Dts.Variables["$Package::ObjectName"].Value.ToString(); 

      //object rawETLConnection = Dts.Connections["etl"].AcquireConnection(Dts.Transaction); 
      //Server etlServer = (Server)rawETLConnection; 

      Server etlServer = new Server("ciesqldeva04"); 
      Database etlDB; 
      etlDB = etlServer.Databases["sell_side_content"]; 




      //object rawReportingConnection = Dts.Connections["reporting"].AcquireConnection(Dts.Transaction); 
      //Server reportingServer = (Server)rawReportingConnection; 
      Server reportingServer = new Server("ciesqldeva05"); 





       Transfer xfr; 
       xfr = new Transfer(etlDB); 
       xfr.DestinationServer = reportingServer.Name; 
       xfr.DestinationDatabase = "sell_side_content"; 
       xfr.DropDestinationObjectsFirst = true; 
       xfr.CopyAllObjects = false; 
       xfr.CopyData = true; 
       xfr.CopySchema = true; 
       xfr.Options.DriAll = true; 


       xfr.ObjectList.Add(etlDB.Tables[objectName, schemaName]); 

       xfr.TransferData(); 
      } 
      catch (SmoException smoex) 
      { 
       Dts.Events.FireError(120, " SMO - TransferObjects.dtsx", smoex.Message, "", 0); 

      } 
      catch (Exception ex) 
      { 
       Dts.Events.FireError(120,"Non SMO - TransferObjects.dtsx",ex.Message,"",0); 

      } 
      Dts.TaskResult = (int)ScriptResults.Success; 
     } 

Nó hoạt động tốt khi tôi chạy nó thông qua Visual Studio 2012. Nhưng khi tôi triển khai nó vào hộp và chạy nó thông qua kích chuột phải vào tên gói trong SSMS và nhấn thực thi, nó thất bại với tin nhắn này "Chuyển đối tượng sử dụng SMO: Lỗi: Đã xảy ra lỗi khi truyền dữ liệu. Xem ngoại lệ bên trong để biết chi tiết".

Tôi cũng đã chuyển đổi tập lệnh thành ứng dụng bảng điều khiển và chạy nó trên hộp mà trước đó tôi đã triển khai gói và chạy nó qua thiết bị đầu cuối và nó có thể chuyển thành công để nó không giống như vấn đề thiếu DLL .

Đây là mã cho rằng giao diện điều khiển ứng dụng

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using System.Threading.Tasks; 
using System.Data; 
using Microsoft.SqlServer.Dts.Runtime; 
using Microsoft.SqlServer.Management.Smo; 
using System.Collections.Specialized; 
using System.Collections; 
namespace ConsoleApplication1 
{ 
    class Program 
    { 
     static void Main(string[] args) 
     { 
      Server etlServer = new Server("ciesqldeva04"); 
      Database etlDB; 
      etlDB = etlServer.Databases["sell_side_content"]; 




      //object rawReportingConnection = Dts.Connections["reporting"].AcquireConnection(Dts.Transaction); 
      //Server reportingServer = (Server)rawReportingConnection; 
      Server reportingServer = new Server("ciesqldeva05"); 




      try 
      { 
       Transfer xfr; 
       xfr = new Transfer(etlDB); 
       xfr.DestinationServer = reportingServer.Name; 
       xfr.DestinationDatabase = "sell_side_content"; 
       xfr.DropDestinationObjectsFirst = true; 
       xfr.CopyAllObjects = false; 
       xfr.CopyData = true; 
       xfr.CopySchema = true; 
       xfr.Options.DriAll = true; 


       xfr.ObjectList.Add(etlDB.Tables["award_sector", "people"]); 

       xfr.TransferData(); 
      } 
      catch (SmoException smoex) 
      { 
       Console.WriteLine("This is an SMO Exception"); 
       //Display the SMO exception message. 
       Console.WriteLine(smoex.Message); 
       //Display the sequence of non-SMO exceptions that caused the SMO exception. 
      } 
     } 
    } 
} 

Tôi đã thử nhiều thứ nhưng không thành công. Bất kì sự trợ giúp nào đều được đánh giá cao.

P.S. Tôi đang chạy này trên SQL Server 2012.

+1

Nếu bạn thay đổi thông tin đăng nhập của bạn để bao gồm smoex.Inner, chấm nó cung cấp bất kỳ cái nhìn sâu sắc như các lỗi? Khi bạn chạy gói này trên máy chủ từ xa, bạn sẽ gọi nó như thế nào? Đây có phải là sử dụng mô hình triển khai dự án (mới) hoặc mô hình triển khai gói không? – billinkc

+0

Tôi đang sử dụng mô hình triển khai dự án. Và tôi gọi nó bằng cách đăng nhập vào máy chủ đó bằng SSMS, sau đó điều hướng đến dự án theo danh mục dịch vụ tích hợp-> ssisdb -> ... và sau đó nhấp chuột phải vào gói và nhấn thực thi. – bootkick

+0

Cũng làm odes bên trong không giúp đỡ như là ngoại lệ được ghi lại không phải là một trong tôi ném. Tôi nhận được danh sách lỗi bằng cách sử dụng tùy chọn này message_type, \t tin nhắn từ ssisdb.internal.operation_messages nơi operation_id = 74404 \t order by message_time asc – bootkick

Trả lời

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