Как сбросить вывод из SQL Server Profiler 2008 в файл CSV
-
27-09-2019 - |
Вопрос
Я отладку хранящихся процедур, и сейчас я заинтересован в том, что побежал в каком порядке, и который, какие параметры, в отличие от того, как быстрые вещи работали и что могут проникнуть между и вызвать замедление.
Итак, я захватил пару минут стоят трассировки. Проблема в том, что есть слишком много вещей, и мне нужно сузить его. Если я сделаю 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
расширение):
Убедитесь, что вы выбираете опцию Все события в одном файле.