Имитировать SQL Server Profiler в приложении C #? - PullRequest
3 голосов
/ 18 ноября 2008

Я хочу создать трассировку на сервере базы данных из моего приложения на C #, как то, что вы делаете в SQL Server Profiler. Я обнаружил хранимые процедуры (sys.sp_trace_create и т. Д.), Которые, похоже, не работают для моей студии управления SQL. Мне было интересно, может ли кто-нибудь помочь с кодированием, или где я мог бы начать это делать?!

Ответы [ 3 ]

3 голосов
/ 18 ноября 2008

Вы хотите, чтобы это было в режиме реального времени, так же, как и сам Profiler? Это было бы сложно сделать. Вы в основном воссоздаете профилировщик.

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

Самый простой способ узнать, как это работает, - запустить сам SQL Profiler, установить все необходимые параметры, затем нажать «Выполнить» и сразу же нажать «Стоп». Затем перейдите в «Файл», «Экспорт», «Определение трассировки скрипта» и выберите соответствующую версию.

Это должно дать вам сценарий TSQL, который объединяет все правильные части, включая все события трассировки, столбцы и т. Д.

Больше технической истории профилировщика: Эта старая статья SQLMag имеет некоторую историю Профилировщика, который заменил приложение под названием «SQL Trace», когда был представлен SQL 7.0.

1 голос
/ 10 декабря 2012

Если вам все еще интересно, нашел этот код

public void FileToTable()
{
    TraceServer reader = new TraceServer();

    ConnectionInfoBase ci = new SqlConnectionInfo("localhost");
    ((SqlConnectionInfo)ci).UseIntegratedSecurity = true;

    reader.InitializeAsReader(ci, @"Standard.tdf");

    int eventNumber = 0;

    while (reader.Read())
    {
        Console.Write( "{0}\n", reader.GetValue(0).ToString() );
    }
    reader.Close();        
}
0 голосов
/ 18 ноября 2008

Если вы используете LINQ to SQL, то все генерируемые им команды SQL могут быть отправлены в окно вывода (или записаны в файл, если хотите). Смотрите здесь: http://www.u2u.info/Blogs/Kris/Lists/Posts/Post.aspx?ID=11

...