Наблюдение за счетчиками производительности в задаче «Сценарий»
Администраторам необходимо наблюдать за производительностью пакетов служб Integration Services, выполняющих сложные преобразования больших объемов данных. Пространство имен System.Diagnostics платформы Microsoft.NET Framework предоставляет классы для использования существующих счетчиков производительности и создания собственных счетчиков производительности.
Счетчики производительности хранят сведения о производительности приложения, которые можно использовать для анализа производительности программного обеспечения по времени. За счетчиками производительности можно наблюдать локально или удаленно с помощью средства Системный монитор. Значения счетчиков производительности можно сохранить в переменных, чтобы далее в пакете можно было организовать ветвление потока управления.
В качестве альтернативы счетчикам производительности можно вызывать событие FireProgress через свойство Events объекта Dts. Событие FireProgress возвращает среде выполнения служб Integration Services как сведения о добавочном ходе выполнения, так и процент завершения задачи.
Примечание |
---|
Если нужно создать задачу, которую будет удобно использовать в нескольких пакетах, рекомендуется начать разработку пользовательской задачи с этого образца задачи «Сценарий». Дополнительные сведения см. в разделе Разработка пользовательской задачи. |
Описание
Следующий пример создает пользовательский счетчик производительности и увеличивает его значение. Во-первых, пример определяет, существует ли счетчик производительности. Если счетчик производительности отсутствует, сценарий вызывает метод Create объекта PerformanceCounterCategory для его создания. После создания счетчика производительности сценарий увеличивает его значение. Наконец, пример следует рекомендациям и вызывает метод Close для счетчика производительности, когда он становится ненужным.
Примечание |
---|
Чтобы создать новую категорию счетчика производительности и сам счетчик производительности, необходимы права администратора. Кроме того, новая категория и счетчик производительности после создания сохраняются на компьютере. |
Настройка примера задачи «Сценарий»
- Чтобы импортировать пространство имен System.Diagnostics в коде используется инструкция Imports.
Пример кода
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;
}
|