Вопрос

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

Итак, я захватил пару минут стоят трассировки. Проблема в том, что есть слишком много вещей, и мне нужно сузить его. Если я сделаю File -> Save As, Я получаю следующие варианты:

  • Trace File ...
  • Шаблон трассировки ...
  • Таблица следа ...
  • Trace XML-файл ...
  • Trace XML-файл для воспроизведения ...

Теперь это приличные варианты, но то, что я действительно хочу, это табличный формат, такой как CSV. Я думаю, что запятые в Trace SP, вероятно, будут испортить формат CSV. Я бы с радостью использовал что-то еще, например || как разделитель.

Как только у меня есть табличный формат, я могу отфильтровать его, используя grep, и т. Д. И затем легко обрабатывать его с Python, чтобы увидеть точные вещи, которые я хочу. Я начал анализировать файл XML со сценарием, но оказал себя слишком много времени на след XML Формат файла (не использовали lxml Библиотека до).

Так что ... Есть ли проще? Могу ли я хотя бы скопировать его в Excel?

Это было полезно?

Решение

Если вы сохраните его в таблицу трассировки; Вы можете получить данные в таблице в SQL Server, который позволит вам манипулировать его до содержания сердца; в том числе сбрасывать его в CSV, если все еще требуется. Столбец текстовых данных полностью представлен в таблице.


Если вы выберете СохранятьТаблица трассировки. Отказ Вам будет предложено название таблицы и базы данных. Позвольте сказать, что вы называете это Profilertemp в базе данных царапин.

Войти в те; Вы можете запросить таблицу, используя

select * from scratch.dbo.ProfilerTemp

Вы увидите все в окне трассировки в таблице. Если вы не фильтровали, чтобы просто сохраненные процедуры и нужны только их в выборе

Select textdata from [Scratch].[dbo].[ProfilerTemp] 
  where eventclass = 10 
  And textdata like 'exec %' 
  and not cast(TextData as nvarchar(max))= 'exec sp_reset_connection'

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

Если вы хотите это в качестве текстового файла; Выберите Query - результаты для файла и запустите запрос. Это будет предложено имя файла и дать вам текст параметра в качестве текстового файла.

Другие советы

TL; DR: Копировать в текстовый редактор, подготовить вручную, затем вставить в Excel.

У меня очень мало опыта с SQL Server, поэтому я не знаю, будет ли это работать для других, но это сделало для меня:

  • Выберите нужные строки в SQL Server Profiler. Ctrl + C для копирования.
  • Вставьте в простой текстовый редактор, который может выполнять обычный поиск и заменять (например, Notepad ++ в моем случае).
  • Regex заменить (N'(''')?[^']*?)\r\n(([^']*?)\r\n)?(([^']*?)\r\n)? с $1 $4 $6
    • Это очищает все новые слова из SQL Scripts.
    • Продолжайте делать «заменить все», пока больше не найдены результатов.
  • Regex заменить (Batch(Starting|Completed)[^\\]*?)\r\n с $1
    • Это очищает новинки из большего количества SQL. Опять же, продолжайте заменять до тех пор, пока нет результатов.
  • Regex заменить \r\nset с set
    • Это очищает все новинки из аудиторских сценариев входа
  • Вам может потребоваться сделать больше замены, вы получаете идею.
  • Вставьте в Excel, используя «Мастер импорта текста». Используйте вкладки в качестве делиминатора.
  • Сортировать по первому столбцу и удалить любые бесполезные строки (например, «аудитор входа» в моем случае). Вам также может потребоваться вручную переместить некоторые данные над столбцом (например, «EntityFramework» данные в моем случае)

У меня был куча файлов трассировки SQL Profiler, содержащая мероприятия Trace Trace, которые мне нужно было проанализировать. Я закончил преобразовывать их в один файл XML, используя SQL Profiler, а затем чтение этого XML-файла с помощью Python, используя lxml и pandas Библиотеки.

Как данные заканчиваются в пандах Dataframe, вы можете легко преобразовать его в CSV, Excel, ... или проанализировать его в Python (если вы знакомы с пандами).

Сценарий доступен как суть. Отказ Он написан специально для файлов Trace Trace, так как у меня не было никаких других следов. Другими словами, вам может потребоваться настроить его немного, чтобы обслуживать вашу цель. Не волнуйтесь, если файл XML большой (несколько 100 мбс); Сценарий использует iterparse(), что означает, что файл не будет прочитан в память, и только соответствующие элементы будут захвачены. Например xdl файл ca. 220 МБ проанализировали менее чем за 13 секунд.

Сохранение файлов трассировки как XML (xdl расширение):

Extract

Убедитесь, что вы выбираете опцию Все события в одном файле.

Save

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top