Как вывести вывод из SQL Server Profiler 2008 в CSV-подобный файл - PullRequest
39 голосов
/ 23 ноября 2010

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

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

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

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

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

Итак ... что проще?путь?Можно ли хоть как-то скопировать его в Excel?

Ответы [ 3 ]

64 голосов
/ 10 декабря 2010

Если вы сохраните его в таблице трассировки; вы можете получить данные в виде таблицы в 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'

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

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

3 голосов
/ 14 октября 2016

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

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

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

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

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

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

Extract

Makeобязательно выберите опцию все события в одном файле .

Save

...