Monitoraggio dei contatori delle prestazioni con l'attività ScriptMonitoring Performance Counters with the Script Task

È possibile che gli amministratori abbiano l'esigenza di monitorare le prestazioni dei pacchetti di Integration ServicesIntegration Services che eseguono trasformazioni complesse su grandi quantità di dati.Administrators may need to monitor the performance of Integration ServicesIntegration Services packages that perform complex transformations on large amounts of data. Il System. Diagnostics dello spazio dei nomi del MicrosoftMicrosoft .NET Framework.NET Framework fornisce classi per l'utilizzo di contatori delle prestazioni esistenti e per la creazione di contatori delle prestazioni.The System.Diagnostics namespace of the MicrosoftMicrosoft .NET Framework.NET Framework provides classes for using existing performance counters and for creating your own performance counters.

I contatori delle prestazioni archiviano informazioni sulle prestazioni dell'applicazione che è possibile utilizzare per analizzare le prestazioni del software nel corso del tempo.Performance counters store application performance information that you can use to analyze the performance of software over time. I contatori delle prestazioni può essere monitorati localmente o in remoto utilizzando il Performance Monitor strumento.Performance counters can be monitored locally or remotely by using the Performance Monitor tool. È possibile archiviare i valori dei contatori delle prestazioni in variabili per una successiva diramazione del flusso di controllo nel pacchetto.You can store the values of performance counters in variables for later control flow branching in the package.

Come alternativa all'utilizzo di contatori delle prestazioni, è possibile generare il FireProgress evento attraverso il Events proprietà del Dts oggetto.As an alternative to using performance counters, you can raise the FireProgress event through the Events property of the Dts object. L'evento FireProgress restituisce al runtime di Integration ServicesIntegration Services informazioni relative sia allo stato incrementale che alla percentuale di completamento.The FireProgress event returns both incremental progress and percentage complete information to the Integration ServicesIntegration Services runtime.

Nota

Se si desidera creare un'attività da riutilizzare più facilmente con più pacchetti, è possibile utilizzare il codice di questo esempio di attività Script come punto iniziale per un'attività personalizzata.If you want to create a task that you can more easily reuse across multiple packages, consider using the code in this Script task sample as the starting point for a custom task. Per altre informazioni, vedere Sviluppo di un'attività personalizzata.For more information, see Developing a Custom Task.

DescriptionDescription

Nell'esempio seguente viene creato un contatore delle prestazioni personalizzato che viene incrementato.The following example creates a custom performance counter and increments the counter. Viene innanzitutto verificato se il contatore delle prestazioni esiste già.First, the example determines whether the performance counter already exists. Se il contatore delle prestazioni non è stato creato, lo script chiama il crea metodo il PerformanceCounterCategory oggetto per la sua creazione.If the performance counter has not been created, the script calls the Create method of the PerformanceCounterCategory object to create it. Dopo la creazione del contatore delle prestazioni, lo script lo incrementa.After the performance counter has been created, the script increments the counter. Infine, viene seguita la procedura consigliata di chiamare il Chiudi metodo sul contatore delle prestazioni quando non è più necessario.Finally, the example follows the best practice of calling the Close method on the performance counter when it is no longer needed.

Nota

Per creare una nuova categoria di contatori delle prestazioni e un nuovo contatore delle prestazioni, è necessario disporre di diritti amministrativi.Creating a new performance counter category and performance counter requires administrative rights. Inoltre, la nuova categoria e il nuovo contatore diventano persistenti nel computer dopo la creazione.Also, the new category and counter persist on the computer after creation.

Per configurare l'esempio di attività ScriptTo configure this Script Task example

  • Utilizzare un importazioni istruzione nel codice per importare il System. Diagnostics dello spazio dei nomi.Use an Imports statement in your code to import the System.Diagnostics namespace.

Codice di esempioExample Code

Public Sub Main()  

    Dim myCounter As PerformanceCounter  

    Try  
        'Create the performance counter if it does not already exist.  
        If Not _  
        PerformanceCounterCategory.Exists("TaskExample") Then  
            PerformanceCounterCategory.Create("TaskExample", _  
                "Task Performance Counter Example", "Iterations", _  
                "Number of times this task has been called.")  
        End If  

        'Initialize the performance counter.  
        myCounter = New PerformanceCounter("TaskExample", _  
            "Iterations", String.Empty, False)  

        'Increment the performance counter.  
        myCounter.Increment()  

         myCounter.Close()  
        Dts.TaskResult = ScriptResults.Success  
    Catch ex As Exception  
        Dts.Events.FireError(0, _  
            "Task Performance Counter Example", _  
            ex.Message & ControlChars.CrLf & ex.StackTrace, _  
            String.Empty, 0)  
        Dts.TaskResult = ScriptResults.Failure  
    End Try  

End Sub  

public class ScriptMain  
{  

public void Main()  
        {  

            PerformanceCounter myCounter;  

            try  
            {  
                //Create the performance counter if it does not already exist.  
                if (!PerformanceCounterCategory.Exists("TaskExample"))  
                {  
                    PerformanceCounterCategory.Create("TaskExample", "Task Performance Counter Example", "Iterations", "Number of times this task has been called.");  
                }  

                //Initialize the performance counter.  
                myCounter = new PerformanceCounter("TaskExample", "Iterations", String.Empty, false);  

                //Increment the performance counter.  
                myCounter.Increment();  

                myCounter.Close();  
                Dts.TaskResult = (int)ScriptResults.Success;  
            }  
            catch (Exception ex)  
            {  
                Dts.Events.FireError(0, "Task Performance Counter Example", ex.Message + "\r" + ex.StackTrace, String.Empty, 0);  
                Dts.TaskResult = (int)ScriptResults.Failure;  
            }  

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