Как сбрасывать вывод из SQL Server Profiler 2008 в CSV-подобный файл

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

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

  • Файл трассировки ...
  • Шаблон трассировки ...
  • Таблица трасс ...
  • Трассировка || Файл...
  • Файл трассировки XML для воспроизведения ...

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

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

Итак ... есть ли более простой способ? Могу ли я хотя бы скопировать его в Excel?

tabular,sql-server-profiler,output-formatting,

36

Ответов: 3


60 голосов принято
+100

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


Если вы выберете save-> Trace Table. Вам будет предложено указать имя таблицы и базы данных. Допустим, вы называете это 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'

Это отфильтровывает не процедурные вызовы и любое соединение re (N '(' '')? [^ '] *?) R n (([^'] *?) R n)? (([^ ' ] *?) r n)? s вы можете иметь. Возможно, вам придется добавить дополнительные фильтры в зависимости от того, что вы пытаетесь сделать.

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


2

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

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

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

0

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

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

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

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

экстракт

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

Сохранить

Табличный, SQL-сервер профилировщик, выход-форматирование,
Похожие вопросы