2009-09-14 7 views
2

Sur la base de l'exemple here from MSDN, comment fournir des variables de niveau de package SSIS si l'on invoquait le package via la procédure "sp_start_job"?Utilisation de SQL Server Agent pour exécuter un package SSIS distant par programme sur le serveur

Voici le code exemple de MSDN:

Dim jobConnection As SqlConnection 
Dim jobCommand As SqlCommand 
Dim jobReturnValue As SqlParameter 
Dim jobParameter As SqlParameter 
Dim jobResult As Integer 

jobConnection = New SqlConnection("Data Source=(local);Initial Catalog=msdb;Integrated Security=SSPI") 
jobCommand = New SqlCommand("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 = "RunSSISPackage" 

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

Select Case jobResult 
    Case 0 
    Console.WriteLine("SQL Server Agent job, RunSISSPackage, started successfully.") 
    Case Else 
    Console.WriteLine("SQL Server Agent job, RunSISSPackage, failed to start.") 
End Select 
Console.Read() 

Comment puis-je fournir des valeurs aux variables à l'intérieur du package SSIS nommé "RunSSISPackage"?

Répondre

2

Vous pouvez créer une table pour agir comme une file d'attente, en insérant une ligne contenant vos paramètres, puis en démarrant le travail. Dans le TSQL qui s'exécute alors, sélectionnez simplement les valeurs et marquez la ligne de la file d'attente "C" complétée ou supprimez-la et soyez sur votre chemin.

EDIT

essayer de regarder Running SSIS package programmatically qui couvre toutes les méthodes suivantes:

  • package Exécuter en utilisant programme SSIS modèle objet
  • Démarrer processus dtexec.exe. DTEXEC est un utilitaire de ligne de commande permettant d'exécuter des packages SSIS
  • Utilisez SQL Agent. Vous pouvez configurer un travail de l'Agent pour exécuter votre package
  • Utilisez un autre utilitaire pour démarrer DTExec pour vous
  • Créer une application personnalisée qui exécutera le package
+0

mon paquet utilise des chaînes de connexion dynamiques. comment puis-je définir ces valeurs dans mon package, via une requête de table? – D3vtr0n

+0

donc l'un de vos paramètres est l'information de connexion? –

+0

oui, tous les paramètres sont les informations de connexion pour le fichier de destination Access dynamique. l'utilisateur peut sélectionner n'importe quel dossier pour transférer ces données. Pour que mon paquetage SSIS comprenne cela, il a besoin de ces paramètres fournis. Des idées? – D3vtr0n

0

Nous changeons nos valeurs variables dynamiquement au moment de l'exécution par l'utilisation d'une table de configuration ou d'un fichier de configuration. Nous ne permettons pas aux utilisateurs d'exécuter nos paquets SSIS, mais je suppose que votre travail pourrait avoir une étape qui met d'abord à jour le fichier de configuration et ensuite exécute le paquet.

Questions connexes