스크립트 태스크를 사용하여 성능 카운터 모니터링Monitoring Performance Counters with the Script Task

관리자는 대량의 데이터에 대해 복잡한 변환을 수행하는 Integration ServicesIntegration Services 패키지의 성능을 모니터링하는 경우가 있습니다.Administrators may need to monitor the performance of Integration ServicesIntegration Services packages that perform complex transformations on large amounts of data. System.Diagnostics 의 네임 스페이스는 MicrosoftMicrosoft .NET Framework.NET Framework 기존 성능 카운터를 사용 하 고 개발자 고유의 성능 카운터를 만들기 위한 클래스를 제공 합니다.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.

성능 카운터는 시간 경과에 따른 소프트웨어 성능을 분석하는 데 사용할 수 있는 응용 프로그램 성능 정보를 저장합니다.Performance counters store application performance information that you can use to analyze the performance of software over time. 성능 카운터를 사용 하 여에 로컬 또는 원격으로 모니터링할 수는 성능 모니터 도구입니다.Performance counters can be monitored locally or remotely by using the Performance Monitor tool. 나중에 패키지에서 제어 흐름을 분기할 수 있도록 성능 카운터의 값을 변수에 저장할 수 있습니다.You can store the values of performance counters in variables for later control flow branching in the package.

성능 카운터를 사용 하는 대신를 발생 시킬 수 있습니다는 FireProgress 를 통해 이벤트는 Events 의 속성은 Dts 개체입니다.As an alternative to using performance counters, you can raise the FireProgress event through the Events property of the Dts object. FireProgress 이벤트는 진행률 및 완료율 정보를 Integration ServicesIntegration Services 런타임에 반환합니다.The FireProgress event returns both incremental progress and percentage complete information to the Integration ServicesIntegration Services runtime.

참고

여러 패키지에서 쉽게 다시 사용할 수 있는 태스크를 만들려면 이 스크립트 태스크 예제에 있는 코드를 바탕으로 사용자 지정 태스크를 만들어 보십시오.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. 자세한 내용은 사용자 지정 태스크 개발을 참조하세요.For more information, see Developing a Custom Task.

DescriptionDescription

다음 예에서는 사용자 지정 성능 카운터를 만들고 해당 카운터를 증가시킵니다.The following example creates a custom performance counter and increments the counter. 이 예에서는 먼저 성능 카운터가 이미 있는지 여부를 확인합니다.First, the example determines whether the performance counter already exists. 경우 성능 카운터가 만들어지지 않은, 스크립트 호출에서 만들기 의 메서드는 PerformanceCounterCategory 개체를 만듭니다.If the performance counter has not been created, the script calls the Create method of the PerformanceCounterCategory object to create it. 성능 카운터를 만든 후에는 스크립트에서 해당 카운터를 증가시킵니다.After the performance counter has been created, the script increments the counter. 이 예제에서는 호출 최선의 방법을 따르는 하는 마지막으로 닫기 메서드를 더 이상 필요 없는 경우 성능 카운터입니다.Finally, the example follows the best practice of calling the Close method on the performance counter when it is no longer needed.

참고

성능 카운터 범주와 성능 카운터를 새로 만들려면 관리자 권한이 필요합니다.Creating a new performance counter category and performance counter requires administrative rights. 또한 새 범주 및 카운터는 만든 후에도 해당 컴퓨터에 유지됩니다.Also, the new category and counter persist on the computer after creation.

이 스크립트 태스크 예를 구성하려면To configure this Script Task example

  • 사용 하 여 프로그램 Imports 가져오려는 코드에 문이 System.Diagnostics 네임 스페이스입니다.Use an Imports statement in your code to import the System.Diagnostics namespace.

코드 예Example 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;  
        }