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. Lo spazio dei nomi System.Diagnostics di MicrosoftMicrosoft .NET Framework.NET Framework fornisce le classi per l'uso di contatori delle prestazioni esistenti e per la creazione di contatori delle prestazioni personalizzati.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. Possono essere monitorati in locale o in remoto tramite lo strumento Performance Monitor.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.

In alternativa all'uso dei contatori delle prestazioni, è possibile generare l'evento FireProgress tramite la proprietà Events dell'oggetto Dts.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 non è stato creato, lo script chiama il metodo Create dell'oggetto PerformanceCounterCategory per crearlo.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 metodo Close 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

  • Usare un'istruzione Imports nel codice per importare lo spazio dei nomi System.Diagnostics.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;  
        }