Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Удаление файлов трассировки после ее завершения  [new]
Echuy
Member

Откуда:
Сообщений: 26
Суть такова: я пишу для диплома некое клиентское приложение, которое должно собирать статистику по нагрузке на сервер БД. В основе всего лежит создание трассировок с последующим извлечением данных в обход SQL Profiler. Таким образом, каждая из метрик (за информацию о которых - отдельное спасибо, так как я просто в замешательстве, как можно измерить нагрузку на тот или иной элемент, в теме значится "анализ необходимости рефакторинга") будет создавать один или несколько файлов трассировки, а так как MS SQL не умеет перезаписывать файлы, нужно предварительно убедиться, что на момент объявления трассировки файла нет.
Я вижу три пути решения проблемы:
1. Каждый раз создавать файл с уникальным названием. Да, они будут накапливаться, но комиссия не заметит;
2. На момент создания трассировки внимательно посмотреть в директории, затем убить возможный файл через cmdshell, который предварительно нужно разрешить в настройках сервера, а затем снова запретить, запустить трассировку, а при завершении работы программы убить объявленную трассировку, присвоив ей статус 2 и снова убив файл через cmdshell.
3. Спросить на форуме.
Как вы понимаете, в работе сейчас второй вариант, но он мне кажется излишне громоздким и неуклюжим. Может, есть какие-нибудь предложения?
10 дек 13, 12:43    [15270308]     Ответить | Цитировать Сообщить модератору
 Re: Удаление файлов трассировки после ее завершения  [new]
Критик
Member

Откуда: Москва / Калуга
Сообщений: 33970
Блог
рефакторинг делается для облегчения понимания кода, так что тут просто незачем использовать Profiler
10 дек 13, 13:35    [15270892]     Ответить | Цитировать Сообщить модератору
 Re: Удаление файлов трассировки после ее завершения  [new]
Echuy
Member

Откуда:
Сообщений: 26
Критик,

рефакторинг баз данных - это внесение изменений в структуру базы данных, направленных на улучшение качества ее работы, но не привносящее изменений в ее функциональные возможности. И этому должен предшествовать анализ ее слабых мест, для чего используется сбор статистики о ее работе путем создания многочисленных трассировок.
10 дек 13, 13:49    [15271065]     Ответить | Цитировать Сообщить модератору
 Re: Удаление файлов трассировки после ее завершения  [new]
Crimean
Member

Откуда:
Сообщений: 13148
1."многочисленных" - зачем?
2.пиши в базу. для диплома прокатит. обосновать, думаю, сможешь. ибо все равно после в базу трас грузить для анализа
3.посмотри / почитай DataCollection. похоже, тоже чей-то диплом
10 дек 13, 14:56    [15271735]     Ответить | Цитировать Сообщить модератору
 Re: Удаление файлов трассировки после ее завершения  [new]
Echuy
Member

Откуда:
Сообщений: 26
Crimean, насколько я понимаю, MS SQL не позволяет сохранять результаты трассировок непосредственно в базу, если их делать через T-SQL, вне профайлера. Так бы я с удовольствием, мне эти файлы нафиг не нужны. Хотя, может и ошибаюсь. Но, в любом случае, есть ли способ килять их адекватно? Потому как сейчас только так:

	declare @path nvarchar(256); 
    select @path=filename from sys.sysdatabases where name=db_name() 
    select @path = reverse(substring(reverse(@path), charindex('\', reverse(@path)), len(@path)-charindex('\', reverse(@path))+1)) 
    declare @trace_id int
    set @path=@path+N'filename' 
    if exists(select * from sys.traces where path=@path+'.trc') 
    begin 
    select @trace_id=id from sys.traces where path=@path+'.trc' 
    exec sp_trace_setstatus @trace_id,@status=2 
    end 
    exec sp_configure 'show advanced options',1 
    reconfigure 
    exec sp_configure 'xp_cmdshell',1 
    reconfigure 
    declare @path_ nvarchar(255);set @path_='del /f/q ""'+@path+'.trc""' 
    EXEC xp_cmdshell @path_,'no_output' 
    print @path_ 
    exec sp_configure 'xp_cmdshell',0 
    reconfigure 
    exec sp_configure 'show advanced options',0 
    reconfigure 
     
10 дек 13, 15:05    [15271824]     Ответить | Цитировать Сообщить модератору
 Re: Удаление файлов трассировки после ее завершения  [new]
Критик
Member

Откуда: Москва / Калуга
Сообщений: 33970
Блог
Рефакторинг БД обычно делят на:
1) Рефакторинг структуры
2) Рефакторинг качества данных
3) Рефакторинг ссылочной целостности
4) Рефакторинг архитектуры
5) Рефакторинг методов

Из всего этого Profiler обычно используют только для п4.
А пункт 4 обычно называют просто "оптимизацией" (туда же включается и создание/удаление индексов).

Да и зачем вы пишите свой аналог уже имеющегося ПО - не ясно, тут нет элемента новизны. Ведь это что-то типа диплома?

Сейчас в тренде вот такая штука:
Extended Events Tools: http://msdn.microsoft.com/en-us/library/bb630317.aspx
Extended Events для мониторинга SSAS http://msdn.microsoft.com/en-us/library/gg492139.aspx
Пример конфигурирования: http://blogs.msdn.com/b/microsoft_press/archive/2012/03/21/from-the-mvps-a-gui-for-extended-events-in-sql-server-2012.aspx

ps Можете не обращать внимания на файлы, они никому не интересны, так как ваше ПО не предполагает работы 24 часа и 7 дней в неделю. Во всяком случае, вы всегда можете сказать, что ранние трассы нужны для последующего теста системы после рефакторинга.
10 дек 13, 15:06    [15271833]     Ответить | Цитировать Сообщить модератору
 Re: Удаление файлов трассировки после ее завершения  [new]
Критик
Member

Откуда: Москва / Калуга
Сообщений: 33970
Блог
если уж решили их удалять, то это удобнее всего сделать из вашего же клиентского приложения
10 дек 13, 15:09    [15271852]     Ответить | Цитировать Сообщить модератору
 Re: Удаление файлов трассировки после ее завершения  [new]
Echuy
Member

Откуда:
Сообщений: 26
Клиентское приложение может крутиться на удаленной машине, в то время как файлы создаются и удаляются со стороны сервера. Так что и удалять их нужно средствами SQL.
10 дек 13, 15:32    [15272098]     Ответить | Цитировать Сообщить модератору
 Re: Удаление файлов трассировки после ее завершения  [new]
Echuy
Member

Откуда:
Сообщений: 26
Критик, проблема в том, что тематику диплома ("Рефакторинг БД") мне навязали на месте прохождения практики, а когда дошло до оформления ТЗ у дипрука, оказалось, что по специальности диплом должен касаться непосредственно разработки ПО. Так как автоматизировать что-либо, кроме поиска дыр в архитектуре, в рамках дипломного проекта попросту невозможно, я решил написать что-то вроде гибкого монитора, который позволяет в два клика мышкой запустить десяток-другой самописных скриптов-метрик, которые и указывали бы слабые места архитектуры.
10 дек 13, 15:37    [15272138]     Ответить | Цитировать Сообщить модератору
 Re: Удаление файлов трассировки после ее завершения  [new]
Glory
Member

Откуда:
Сообщений: 104760
Echuy
о, в любом случае, есть ли способ килять их адекватно?

Создавать их в одном определенном месте ???
10 дек 13, 15:40    [15272175]     Ответить | Цитировать Сообщить модератору
 Re: Удаление файлов трассировки после ее завершения  [new]
Echuy
Member

Откуда:
Сообщений: 26
Glory, файлы создаются в той же папке, где лежит база, чтобы не воевать с правами доступа и существованием каталога. На одну трассировку лежит по одному (в моем случае) файлу. Какие-то в процессе использования, какие-то - нет.
10 дек 13, 15:49    [15272250]     Ответить | Цитировать Сообщить модератору
 Re: Удаление файлов трассировки после ее завершения  [new]
Glory
Member

Откуда:
Сообщений: 104760
Echuy
файлы создаются в той же папке, где лежит база, чтобы не воевать с правами доступа и существованием каталога.

Спорная концепция.
По нему тогда все, что не попадя, нужно создавать в " в той же папке, где лежит база,"
10 дек 13, 15:51    [15272269]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить