嗨,我正在使用 sql server 2008 r2,我有一种情况,我想将 DMV 的数据捕获到一个表中,我想知道 DMV 的表何时刷新或数据被清除。因为一旦在生产环境中运行,DMV 的数据就会发生变化。我想捕获 DMV 中的每个数据,有人可以帮助我捕获这些数据吗?我需要在生产中查看 CPU、读取、写入数据或测试团队正在运行的查询。谢谢!在进阶
嗨,我正在使用 sql server 2008 r2,我有一种情况,我想将 DMV 的数据捕获到一个表中,我想知道 DMV 的表何时刷新或数据被清除。因为一旦在生产环境中运行,DMV 的数据就会发生变化。我想捕获 DMV 中的每个数据,有人可以帮助我捕获这些数据吗?我需要在生产中查看 CPU、读取、写入数据或测试团队正在运行的查询。谢谢!在进阶
线索就在名称中,DMV 是动态管理视图。它们返回的数据是动态的,将是系统可用的最新值,因此它们会不断更新自己。所以你能做的最好的事情就是在设定的时间间隔内对它们进行采样,然后在你真的需要它们的时候尝试推断中间值
一些 DMV 确实捕获累积统计信息(例如 sys.dm_exec_query_stats,捕获有关查询的累积统计信息)。但是它们不提供您可能在单个查询级别寻找的那种访问。
您的其他选择可能是使用扩展事件 ( http://msdn.microsoft.com/en-us/library/bb630354%28v=sql.105%29.aspx ) 来捕获开发人员提交的查询。Pinal Dave 提供了一个很好的捕获查询的例子 - http://blog.sqlauthority.com/2010/03/29/sql-server-introduction-to-extended-events-finding-long-running-queries/ - 他是基于关于捕获长时间运行的查询,但您可以轻松地减少捕获的时间标准,或者根据需要完全删除它以支持登录匹配或应用程序匹配。