我想找出在执行某些 .net 代码时被触及的表。我怎样才能做到这一点?在一个事务中可能会写入相当多的表,获得所有受影响的表的某种列表会很有帮助。
问问题
48 次
2 回答
3
在 Sql Server 中,您有一个名为 Profiler 的工具(虽然不在 Express 版本中)。转到 Management Studio,工具菜单,应该有“Sql Profiler”。它作为一个单独的应用程序运行。
盯着看时,您为它提供了与要监视的数据库服务器的连接。您可以监控各种各样的事情,但很可能您只想过滤数据库并查看查询:
- 前往活动选择
- 勾选“显示所有列”
- 打开“列过滤器”
- 在过滤器列表中输入您的数据库名称,以及您可能感兴趣的任何其他内容(大多数情况下,默认设置就可以了)
现在,当您单击“运行”时,跟踪正在运行。暂停它,将您的代码运行到您想查看正在发生什么的行,然后取消暂停。您将看到所有被执行的查询(不仅是您的代码,还有任何对 db 执行的查询)。
您没有指定您正在使用的 sql server 版本,但分析器自 v2000 以来就在那里,可能存在细微差别。
于 2013-10-22T15:23:07.947 回答
1
如果您使用的是实体框架,您可以询问 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 回答