Модульное тестирование Sql на логическое чтение
У нас есть модульные тесты для нашего уровня доступа к данным. Это помогло обнаружить синтаксические ошибки sql.
Теперь, когда у нас есть эти тесты, я хотел бы сделать еще один шаг вперед. Я хотел бы запустить модульные тесты и найти SQL, который имеет большое количество логических чтений, автоматически.(Чтобы найти SQL нуждается в настройке)
Добавить "установить статистику ввода-вывода" в sql не сложно. То, что я ищу, - это хранимая процедура, куда я отправляю ему базу данных, и она возвращает строку, содержащую информацию о логическом чтении о sql. Я работаю в Sybase, но если вы знаете о сохраненном proc/etc, который делает это в другой БД, это все равно будет огромной помощью.
Спасибо!
1 ответ
Это невозможно с помощью процедуры TSQL, но выходные данные можно записать в.net, подписавшись на InfoMessage
событие в объекте SqlConnection.
...
using (var connection = new SqlConnection("connectionstring")
using (var command = new SqlCommand("SET STATISTICS IO ON"))
{
connection.Open();
connection.InfoMessage += OnInfoMessage;
using (var reader = command.ExecuteReader())
{
....
}
}
...
private static void OnInfoMessage(object sender, SqlInfoMessageEventArgs args)
{
foreach (SqlError err in args.Errors)
{
Console.WriteLine(err.Message);
}
}