Модульное тестирование 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);
      }
  }
Другие вопросы по тегам