【问题标题】:Is it possible to determine the dataflow within a database?是否可以确定数据库中的数据流?
【发布时间】:2015-05-14 14:06:05
【问题描述】:

是否可以确定数据库中的数据流? 例如我首先在 MainTable1 中添加/插入一条记录,然后通过触发器 SubTable1,SubTable2 插入了记录,SubTable3 更新了一条记录,然后运行 ​​StoredProcedure1,它首先更新 SubTable4,然后运行 ​​StoredProcedure2,它在子表 5。因此,只需在 MainTable1 中添加一条记录,我就会影响其他 5 个表。

现在想象一个比这个更复杂的过程(我目前正面临这个过程,我想赢得时间和精确度;我仍然会自己调查它(如果我能先找到答案 - 我会在这里发布)) 有没有办法通过使用 T-SQL 来“提取”这个流程?

【问题讨论】:

标签: tsql dataflow


【解决方案1】:

您可以使用 SQL Profiler 捕获插入后的所有事件。创建并运行配置文件会话,启动插入并查看随后的所有操作。有很多事件可以被捕获。例如,SQL:BatchStarting 将显示您的 INSERT,SP:StmtStarting 显示存储过程中的语句等。

【讨论】:

  • 确实,SQL Profiler 可以向我展示一个流程。但是在 30 个用户同时针对同一个数据库工作的场景中,使用不同的流......识别每个流将是一场噩梦(或关闭)。或者我可以一个一个地启动自己的流程(使用或不使用 UI),然后写下或绘制实际的流程。这种方法的另一个问题可能是它没有考虑 SP 或触发器中的现有子句......但是,事实上,SQL Profiler 可以帮助我进行手动检测。不过,感谢 Alsin 的回答和关注!
  • 您可以以不同的方式过滤 Profiler 跟踪,以仅捕获所有信息的一部分。是的,您可以一一启动操作并按您的 PID 过滤。 Profiler 的主要目标是发现调用了某个过程。之后您可以查看 SP 以查看所有子句。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多