2009-09-21 2 views
8

Я пытаюсь устранить this problem с помощью SQL Profiler (SQL 2008)Есть ли способ фильтровать трассировку SQL Profiler?

Через несколько дней подряд след в производстве, наконец, ошибка повторилась, и теперь я пытаюсь диагностировать причину. Проблема заключается в том, что трассировка имеет 400 тыс. Строк, 99,9% из которых поступают из «сервера отчетов», и я даже не знаю, почему она включена, но, похоже, каждый раз проверяет SQL Server ...

Есть ли способ отфильтровать некоторые записи из трассы, чтобы иметь возможность смотреть на остальные?
Могу ли я сделать это с помощью текущего файла .trc, или мне нужно снова запустить трассировку?
Существуют ли другие приложения для просмотра файла .trc, который может дать мне эту функцию?

ответ

18

Вы можете загрузить захваченную трассировку в SQL Server Profiler: Viewing and Analyzing Traces with SQL Server Profiler.

Или вы можете загрузить в инструмент, например, ClearTrace (бесплатная версия) для выполнения анализа рабочей нагрузки.

Вы можете загрузить в таблицу SQL Server, например, так:

SELECT * INTO TraceTable 
FROM ::fn_trace_gettable('C:\location of your trace output.trc', default) 

Затем вы можете запустить запрос агрегировать данные, такие как этот:

SELECT 
    COUNT(*) AS TotalExecutions,  
    EventClass, 
    CAST(TextData as nvarchar(2000)) , 
    SUM(Duration) AS DurationTotal , 
    SUM(CPU) AS CPUTotal , 
    SUM(Reads) AS ReadsTotal , 
    SUM(Writes) AS WritesTotal 
FROM 
    TraceTable 
GROUP BY 
    EventClass, 
    CAST(TextData as nvarchar(2000)) 
ORDER BY 
    ReadsTotal DESC 

Смотрите также: MS SQL Server 2008 - How Can I Log and Find the Most Expensive Queries?

Также, как правило, необходимо настроить фильтры для захваченной трассы перед ее запуском. Например, широко используемый фильтр должен ограничивать только события, которые требуют более определенного количества чтений, например 5000.

+0

эй Митч, где у вас такие функции. можете ли вы предложить мне источник для этой и подобных функций? –

+0

различные источники, включая первую ссылку выше, блоги и книги. Многие из блога MVPs SQL Server содержат полезную информацию. –

3

Загрузите .trc локально, а затем используйте сохранить в базу данных локальному db, а затем запросить контент вашего сердца.

3

Эти предложения отлично подходят для существующей трассировки - если вы хотите отфильтровать трассировку по мере ее возникновения, вы можете настроить фильтры событий на трассе перед ее запуском.

Самый полезный фильтр в моем опыте это имя приложения - для этого вы должны убедиться, что каждая строка соединения используется для подключения к базе данных имеет соответствующее значение Имя приложения в нем, то есть:

».. .Server = MYDB1; встроенная проверка подлинности = SSPI; Application Name = MyPortal; ...»

затем в свойствах трассировки для новой трассировки, выберите вкладку выбор событий, а затем нажмите Column фильтры ...

Выберите фильтр ApplicationName и добавьте значения в LIKE, чтобы включить только те соединения, которые вы указали, т.е. используя MyPortal в поле LIKE будет включать только события для соединений, имеющих это имя приложения.

Это не позволит вам собрать всю информацию о том, что службы Reporting Services генерируют, например, и делают последующий анализ намного быстрее.

Существует множество других фильтров, поэтому, если вы знаете, что ищете, например, длительное выполнение (Duration) или большой IO (чтение, запись), вы также можете фильтровать их.

0

Здесь вы можете найти полный сценарий для запроса трассировки по умолчанию с полным списком событий можно фильтровать:

http://zaboilab.com/sql-server-toolbox/anayze-sql-default-trace-to-investigate-instance-events


Вы должны запросить sys.fn_trace_gettable (@ TraceFileName, по умолчанию) объединение sys.trace_events для декодирования номеров событий.

2

С SQL Server 2005 вы можете фильтровать содержимое файла .trc напрямую из SQL Profiler; не импортируя его в таблицу SQL. Просто следуйте процедуре, предложенной здесь:

http://msdn.microsoft.com/en-us/library/ms189247(v=sql.90).aspx

Дополнительный намек: Вы можете использовать «%» в качестве фильтра шаблона. Например, если вы хотите фильтровать HOSTNAME, например SRV, вы можете использовать SRV%.

 Смежные вопросы

  • Нет связанных вопросов^_^