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

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

6 ответов

Решение

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

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

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

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

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

В свойствах трассы перейдите на вкладку Выбор события. Затем щелкните переключатель «Показать все столбцы». После этого нажмите кнопку «Фильтры столбцов».

Теперь вы можете увидеть свойство «Имя базы данных» и щелкнуть по нему. Разверните окно «Мне нравится», введите имя своей БД и нажмите «ОК», и теперь вы можете запустить профилировщик.

Экспериментально я смог наблюдать это:

Когда 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

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

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

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

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

Другие вопросы по тегам