SQL Server Profiler - Как отфильтровать трассировку, чтобы отображать события только из одной базы данных?


381

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

Ответы:


574

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


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

34
Чтобы найти DatabaseID: ВЫБЕРИТЕ [имя], [dbid] ОТ [master]. [Dbo]. [Sysdatabases] ORDER BY [name]
Саймон

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

2
И вы должны сделать это, beforeначиная трассировку. Если вы сделаете это после - поле не будет редактируемым!
DarkWalker

2
Не забудьте остановить трассировку или запустить ее перед запуском.
Fery

42

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

Предполагая, что у вас выбран шаблон настройки, для фильтрации:

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

Я тоже всегда сохраняю трассировку в таблице, чтобы после факта я мог выполнять 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) в окне «Новая трассировка» SQL Profiler 2000


4

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

Разверните узел « Мне нравится» и введите фильтр с процентными %знаками, такими как %MyDatabaseName%или %TextDataToFilter%. Без %%знаков фильтр работать не будет.

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


1

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

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.