1

データアクセスレイヤーの単体テストがあります。これは、SQL 構文エラーを見つけるのに役立ちました。
これらのテストが完了したので、さらに一歩進めたいと思います。単体テストを実行して、論理読み取りの数が多い sql を自動的に見つけたいと思います (チューニングが必要な sql を見つけるため)。

「set statistics IO」をSQLに追加することは難しくありません。私が探しているのは、データベースに送信するストアド プロシージャであり、SQL に関する論理読み取り情報を含む文字列を返します。私は Sybase で作業していますが、別の DB でこれを行うストアド proc/etc を知っていれば、それは大きな助けになります。

ありがとう!

4

1 に答える 1

1

これは TSQL プロシージャでは不可能ですがInfoMessage、SqlConnection オブジェクトのイベントをサブスクライブすることにより、.net で出力をキャプチャできます。

  ...
  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);
      }
  }
于 2011-03-11T11:04:18.147 に答える