2008-11-07 2 views
311

Как ограничить трассировку Profiler SQL Server для конкретной базы данных? Я не вижу, как фильтровать трассировку, чтобы не видеть события для всех баз данных в экземпляре, к которому я подключаюсь.SQL Server Profiler - как фильтровать трассировку только для отображения событий из одной базы данных?

ответ

464

В разделе «Свойства трассировки»> «Вкладка« Выбор события »> выберите все столбцы. Теперь под фильтрами столбцов вы должны увидеть имя базы данных. Введите имя базы данных для раздела Like, и вы увидите следы только для этой базы данных.

+5

Я не знаю, является ли это общей проблемой, но когда я запускаю профилировщик, имя базы данных пусто для многих значений, которые я трассирую. Я должен использовать столбец DatabaseID и узнать правильные значения для ввода путем запроса таблицы sysdatabases в основной базе данных. –

+27

. Чтобы найти DatabaseID: SELECT [name], [dbid] FROM [master]. [Dbo]. [Sysdatabases] ORDER BY [name] – Simon

+1

Также зависит от выбранного вами шаблона, если таковые имеются. +1 – beaudetious

30

В SQL 2005 сначала необходимо указать столбец «Имя базы данных» в вашей трассировке. Самое простое - выбрать шаблон настройки, в который уже добавлен этот столбец.

Если у вас есть шаблон Tuning, выбранный для фильтрации:

  • Нажмите на вкладку «Выбор события»
  • Нажмите кнопку «Column фильтры» кнопку
  • Check Показать все столбцы (правая сторона вниз)
  • Выберите «DatabaseName», щелкните значок «плюс» рядом с «Как в правой панели» и введите имя своей базы данных.

Я всегда сохраняю трассировку на столе, чтобы я мог делать LIKE-запросы по данным трассировки после факта.

8

Под экспериментом я был в состоянии наблюдать это:

Когда SQL Profiler 2005 или SQL Profiler 2000 используется с базой данных, проживающих в SQLServer 2000 - упомянута проблема проблема не решена, но когда SQL Profiler 2005 используется с SQLServer базы данных 2005 , он отлично работает!

В сводке, этот вопрос, кажется, преобладает в SQLServer 2000 & выпрямленной в SQLServer 2005

Решение по данному вопросу при работе с SQLServer 2000 (как объяснено wearejimbo)

  1. Определить DatabaseID базы данных, которую требуется отфильтровать, запрашивая таблицу sysdatabases ниже

    SELECT * 
    FROM master..sysdatabases 
    WHERE name like '%your_db_name%' -- Remove this line to see all databases 
    ORDER BY dbid 
    
  2. Используйте фильтр DatabaseID (вместо DatabaseName) в окне New Trace SQL Profiler 2000

1

Создать новый шаблон и проверить имя базы данных. Используйте этот шаблон для своего файла трассировки.

2

В свойствах трассировки, нажмите Выбор вкладку События на вершине рядом с Генеральной. Затем нажмите Фильтры столбцов ... внизу справа. Затем вы можете выбрать, что фильтровать, например TextData или DatabaseName.

Разверните Like узел и ввести фильтр процентных % знаков, как %MyDatabaseName% или %TextDataToFilter%. Без значков %% фильтр не будет работать.

Кроме того, убедитесь, чтобы установить флажок Исключить строки, которые не содержат значения Если вы не можете найти поле, которое вы ищете, чтобы фильтровать такие как DatabaseName перейдите на вкладку Общие и изменить свой шаблон, пустое должно содержать все поля.