1

.net コードの一部が実行されたときに触れられているテーブルを見つけたいです。どうやってやるの?1 つのトランザクションでかなりの数のテーブルが書き込まれる可能性があり、影響を受けるすべてのテーブルのある種のリストを取得すると役立ちます。

4

2 に答える 2

3

Sql Server には、Profiler というツールがあります (Express バージョンではありません)。Management Studio の [ツール] メニューに移動すると、"Sql Profiler" が表示されます。別のアプリケーションとして実行されます。

監視すると、監視するデータベース サーバーへの接続が提供されます。監視できるものはすべてありますが、ほとんどの場合、データベースをフィルタリングしてクエリを表示するだけで済みます。

  • イベントセレクションへ
  • 「すべての列を表示」にチェックを入れる
  • 「列フィルター」を開く
  • フィルタ リストにデータベース名を入力し、他に興味のあるものを入力します (ほとんどの場合、既定値で問題ありません)。

ここで、[実行] をクリックすると、トレースが実行されます。一時停止し、何が起こっているかを確認したい行までコードを実行してから、一時停止を解除します。実行されるすべてのクエリが表示されます (コードだけでなく、db に対して実行されるものすべて)。

使用しているSQLサーバーのバージョンを指定しませんでしたが、プロファイラーはv2000以降にあり、わずかな違いがあるかもしれません.

于 2013-10-22T15:23:07.947 に答える
1

Entity Framework を使用している場合は、DbContext の ChangeTracker プロパティを確認できます。

public class MyDbContext : DbContext
{
    // DbSet<...> stuff excluded in this sample

    public override SaveChanges()
    {
        var changes = ChangeTracker.Entries;

        // changes now contains every piece that has been touched in this DbContext before saving
    }
}
于 2013-10-22T15:25:18.347 に答える