2013-07-17 11 views
7

Sto tentando di eseguire un pacchetto SSIS a livello di codice utilizzando C#.Errore durante l'esecuzione del pacchetto SSIS a livello di codice e dalla riga di comando (DTEXEC)

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

sto ottenendo un errore che dice:

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. 

Sto usando SSIS in Visual Studio 2010, ma l'esecuzione del codice C# da un test di NUnit in VS 2012 (in esecuzione NET 4.0)

Il pacchetto funziona bene all'interno del progetto SSIS in VS 2010 se lo avvio con debug (premere F5), ma non riesce con lo stesso errore se provo a eseguirlo utilizzando dtexec dalla riga di comando (stesso errore in 32 e Versione a 64 bit di dtexec). Fallisce anche con lo stesso errore se lo avvio da Visual Studio usando ctrl + F5 (senza debugging)

Ho trovato articoli online che suggeriscono che è relativo a un problema di 64 bit v a 32 bit, ma sto vedendo il stesso errore durante l'esecuzione di entrambe le versioni di dtexec. Sto usando la versione 11.0.2100.60 di dtexec, che corrisponde alla versione di SQL Server Integration Services Designer in VS 2010.

Non ottengo l'errore se eseguo un pacchetto semplice senza una suddivisione condizionale e la ricerca. Devo installare qualcosa in più per eseguire questo al di fuori di Visual Studio?

Qualche idea?

+1

Sei sicuro il servizio di integrazione è installato correttamente? Offerte e SSDT sarà in grado di eseguire il pacchetto. Se si desidera utilizzare dtexec o eseguire a livello di codice, servizi di integrazione devono essere installati Verificare i servizi in esecuzione sul sistema Come nello scenario, "Servizio di integrazione SQL Server" non sarà presente o in modalità STOPPED – Akshay

+0

Nelle proprietà del pacchetto, hai provato a modificare la proprietà Run64BitRuntime? [Riferimento] (http://goo.gl/QjhgFp) –

+0

Grazie ragazzi. Spero che alcune di queste idee possano essere utili per r altre persone con problemi simili. Tuttavia, il mio progetto ha finito per andare in una direzione diversa, quindi non ho più l'ambiente impostato per tentare nuove soluzioni. – TGH

risposta

4

In seguito al commento sopra riportato, se il servizio è installato correttamente, potrebbe trattarsi di un problema relativo ai diritti (vedo che si sta utilizzando SQL 2012) dell'account da cui i pacchetti vengono eseguiti.

consultare http://technet.microsoft.com/en-us/library/hh213130.aspx

Speranza che aiuta.

2

Questo è il codice VB, ma può essere facilmente tradotto in C#. Provare a eseguire un comando SQL che esegue il pacchetto SSIS.

Qualcosa di simile:

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

Secondo la pagina Install Integration Services Web Microsoft:

"Alcuni componenti di SQL Server che è possibile selezionare per l'installazione nella pagina Selezione funzionalità dell'installazione guidata installare un parziale sottoinsieme dei componenti di Integration Services Questi componenti sono utili per attività specifiche, ma la funzionalità di Integration Services sarà limitata. Ad esempio, l'opzione Servizi Motore di database installa i componenti di Integration Services richiesti per l'importazione ed esportazione guidata di SQL Server. Strumenti opz installa i componenti di Integration Services richiesti per progettare un pacchetto, ma il servizio Integration Services non è installato e non è possibile eseguire pacchetti al di fuori di SQL Server Data Tools. Per garantire un'installazione completa di Integration Services, è necessario selezionare Integration Services nella pagina Selezione funzionalità. "

Ecco perché è possibile eseguire i pacchetti SSIS dagli strumenti di Microsoft, ma non da quelli esterni. Stranamente cade solo su alcuni tipi di componenti

Se si seguono i loro consigli su quella pagina per un'installazione completa dei componenti dei servizi di integrazione, questo dovrebbe risolvere il problema.

"Per un'installazione completa di Integration Services, insieme con gli strumenti e la documentazione per lo sviluppo e la gestione di pacchetti, selezionare entrambi i servizi di integrazione e le seguenti caratteristiche in comune:

Strumenti
  • dati SQL Server per installare gli strumenti per pacchetti di progettazione. assemblee
  • gestione Strumenti- completa per installare SQL Server Management Studio per i pacchetti di gestione.
    • client Strumenti SDK installare gestito per Integratio n Programmazione dei servizi.

"

Problemi correlati