2013-07-17 56 views
7

Tôi đang cố gắng thực hiện gói SSIS theo lập trình bằng C#.Gặp sự cố khi chạy gói SSIS theo chương trình và từ dòng lệnh (DTEXEC)

Application app = new Application(); 
Package package = app.LoadPackage(pkgFullPath, null); 
package.Execute(); 

Tôi nhận được một lỗi nói:

Error in Microsoft.SqlServer.Dts.Runtime.TaskHost/SSIS.Pipeline : To run a SSIS package outside of SQL Server Data Tools you must install Conditional Split of Integration Services or higher. 

Error in Microsoft.SqlServer.Dts.Runtime.TaskHost/SSIS.Pipeline : To run a SSIS package outside of SQL Server Data Tools you must install Lookup of Integration Services or higher. 

Tôi đang sử dụng SSIS trong Visual Studio 2010, nhưng thực thi mã C# từ một thử nghiệm nunit trong VS 2012 (chạy Net 4.0)

Gói chạy tốt bên trong dự án SSIS trong VS 2010 nếu tôi khởi chạy nó bằng gỡ lỗi (nhấn F5), nhưng nó không thành công với cùng lỗi nếu tôi cố gắng chạy nó bằng dtexec từ dòng lệnh (cùng một lỗi trong cả 32 và Phiên bản 64 bit của dtexec). Nó cũng thất bại với cùng một lỗi nếu tôi khởi chạy nó từ bên trong Visual Studio bằng cách sử dụng ctrl + F5 (không gỡ lỗi)

Tôi đã tìm thấy các bài viết trực tuyến đề nghị nó liên quan đến một vấn đề 64 bit v 32 bit, nhưng tôi thấy cùng một lỗi khi chạy cả hai phiên bản của dtexec. Tôi đang sử dụng phiên bản 11.0.2100.60 của dtexec, phù hợp với phiên bản của Nhà cung cấp dịch vụ tích hợp SQL Server trong VS 2010.

Tôi không gặp lỗi nếu tôi chạy một gói đơn giản mà không có sự phân chia và tra cứu có điều kiện. Tôi có phải cài đặt thêm thứ gì đó để chạy ngoài Visual Studio không?

Bất kỳ ý tưởng nào?

+1

Bạn có chắc chắn các dịch vụ tích hợp được cài đặt đúng cách? BIDS và SSDT sẽ có thể thực hiện các gói. Nếu bạn muốn sử dụng dtexec hoặc chạy nó lập trình, dịch vụ tích hợp phải được cài đặt Kiểm tra các dịch vụ đang chạy trên hệ thống của bạn Như trong kịch bản của bạn, "Dịch vụ Tích hợp SQL Server" sẽ không ở đó hoặc trong chế độ DỪNG. – Akshay

+0

Trong thuộc tính gói, bạn đã thử điều chỉnh thuộc tính Run64BitRuntime chưa? (http://goo.gl/QjhgFp) –

+0

Cảm ơn các bạn. Tôi hy vọng một số ý tưởng này có thể hữu ích cho bạn r những người khác có vấn đề tương tự. Tuy nhiên, dự án của tôi đã kết thúc theo một hướng khác, vì vậy tôi không còn môi trường được thiết lập để thử các giải pháp mới nữa. – TGH

Trả lời

4

Tiếp tục nhận xét ở trên, nếu dịch vụ được cài đặt đúng cách, có thể là vấn đề liên quan đến quyền (tôi thấy rằng bạn đang sử dụng SQL 2012) của tài khoản mà các gói được thực thi.

Tham khảo http://technet.microsoft.com/en-us/library/hh213130.aspx

Hy vọng điều đó sẽ hữu ích.

2

Đây là mã VB, nhưng có thể dễ dàng được dịch sang C#. Thử chạy một lệnh SQL thực thi Gói SSIS.

Cái gì như:

Try 
    'Job implementation goes here 
    Dim jobConnection As System.Data.SqlClient.SqlConnection 
    Dim jobCommand As SqlCommand 
    Dim jobParameter As SqlParameter 
    Dim jobReturnValue As SqlParameter 
    Dim jobResult As Integer 


    jobConnection = New System.Data.SqlClient.SqlConnection(SSISConnectionString) 
    jobCommand = New SqlCommand("msdb.dbo.sp_start_job", jobConnection) 
    jobCommand.CommandType = CommandType.StoredProcedure 

    jobReturnValue = New SqlParameter("@RETURN_VALUE", SqlDbType.Int) 
    jobReturnValue.Direction = ParameterDirection.ReturnValue 
    jobCommand.Parameters.Add(jobReturnValue) 


    jobParameter = New SqlParameter("@job_name", SqlDbType.VarChar) 
    jobParameter.Direction = ParameterDirection.Input 
    jobCommand.Parameters.Add(jobParameter) 
    jobParameter.Value = packageName 

    jobConnection.Open() 
    jobCommand.ExecuteNonQuery() 
    jobResult = DirectCast(jobCommand.Parameters("@RETURN_VALUE").Value, Integer) 

    jobConnection.Close() 


    Select Case jobResult 
     Case 0 
      'Successful run 
     Case Else 
      Throw New Exception("SQLAgent Job failed to start!") 
    End Select 


Catch ex As Exception 
    Return ex 
End Try 
1

Theo microsoft trang Install Integration Services web:

"Một số thành phần SQL Server mà bạn có thể chọn để cài đặt trên trang Feature Selection của Setup Wizard cài đặt một tập hợp con một phần Các thành phần này rất hữu ích cho các nhiệm vụ cụ thể, nhưng chức năng của Integration Services sẽ bị giới hạn Ví dụ, tùy chọn Database Engine Services sẽ cài đặt các thành phần Integration Services cần thiết cho SQL Server Import and Export Wizard. Công cụ chọn ion cài đặt các thành phần dịch vụ tích hợp cần thiết để thiết kế một gói, nhưng dịch vụ tích hợp dịch vụ không được cài đặt và bạn không thể chạy các gói bên ngoài công cụ dữ liệu SQL Server. Để đảm bảo cài đặt Dịch vụ Tích hợp hoàn chỉnh, bạn phải chọn Dịch vụ Tích hợp trên trang Lựa chọn Tính năng. "

Đó là lý do tại sao bạn có thể chạy các gói SSIS từ bên trong công cụ của Microsoft, chứ không phải từ bên ngoài công cụ đó.

Nếu bạn làm theo lời khuyên của họ trên trang đó để cài đặt đầy đủ các thành phần dịch vụ tích hợp, điều này sẽ giải quyết được vấn đề.

"Đối với một cài đặt hoàn chỉnh các dịch vụ tích hợp, cùng với các công cụ và tài liệu hướng dẫn cho việc phát triển và quản lý gói, chọn cả hai dịch vụ tích hợp và các tính năng chung sau đây:

  • dữ liệu SQL Server Công cụ để cài đặt các công cụ cho gói thiết kế. assemblies
  • Quản lý Tools- Complete để cài đặt SQL server Management Studio đối với các gói quản lý.
    • khách hàng cụ SDK để cài đặt quản lý cho Integratio n Lập trình dịch vụ.

"

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