2010-01-29 4 views
0

Quelle est la meilleure façon de lire les variables système à partir du composant de script.Lecture de la variable système à partir du composant de script

Essayé comme ci-dessous: fonctionne très bien quand est utilisateur variable

base.PreExecute(); 
    IDTSVariables100 variables = null; 
    VariableDispenser.LockForRead("System::ContainerStartTime"); 
    VariableDispenser.GetVariables(out variables); 
    auditTimeStamp = Convert.ToDateTime(variables[1].Value); 
    System.Windows.Forms.MessageBox.Show(auditTimeStamp.ToString()); 
    variables.Unlock(); 

quand essayé de lire la variable système plaids erreur suivante:

Script Component a rencontré une exception dans le code utilisateur: Nom du projet: SC_0bfc7da1c6fe4b83bc124b87eb4178e5 Exception de HRESULT: 0xC0010009

à Microsoft.SqlServer.Dts.Runtime.Wrapper.IDTSVariables100.get_Item (Object Index) à ScriptMain.PreExecute() à Microsoft.SqlServer.Dts.Pipeline.ScriptComponentHost.PreExecute()

des indices s'il vous plaît.

Merci

Répondre

1

Ok a fait ce que

 #region Class Variables 

     int jobId; 
     DateTime auditTimeStamp; 
     IDTSVariables100 variables; 
     const string tableName = "ORGANISATION_PROVIDER"; 

     #endregion 

     public override void PreExecute() 
     { 
      #region On PreExecute - Get the JOB ID passed - COMMON 
      base.PreExecute(); 
      variables= null; 
      VariableDispenser.LockForWrite("System::ContainerStartTime"); 
      VariableDispenser.GetVariables(out variables); 
      auditTimeStamp = Convert.ToDateTime(variables[0].Value); 
      variables.Unlock(); 

      #endregion 
     } 

Cela fonctionne fine..not que ce que je l'ai mal fait auparavant.

0

Vous pouvez créer une variable d'utilisateur qui est évaluée comme une expression qui fait référence à la variable système. Quelque chose comme ça

@[System :: PackageName]. 
2

Vous avez modifié l'index, de

Convert.ToDateTime(variables[1].Value); 

à

Convert.ToDateTime(variables[0].Value); 
Questions connexes