如何使用SQL Server分析器监视单个表上的活动

我有一个表使用和身份种子为其独特的身份列。 我们注意到身份价值的一些巨大的跳跃,我们无法解释。 该表有20,000行奇数,最大身份值超过5.6亿,身份增量为1!

我想使用SQL Server分析器来监视那个表上的活动,所以我可以看到是什么导致身份跳到大的排列,但是当我来看看显示器时,我立即感到困惑。 我承认,我很忙,没有时间去真正了解这项工作(尽可能多的),所以可以使用一个粗略的指导,你应该采取的步骤来监控桌子上的活动。

任何帮助真的不胜感激。

启动SQL事件探查器,创build一个新的跟踪并连接到您要监视的SQL Server。

注意,如果这是非常繁忙的生产服务器,那么你不应该使用SQL事件探查器,因为它会降低SQL Server的速度

我通常使用“标准”configuration文件,然后编辑它。

点击“事件select”标签。 我通常取消select“审计login”,“审计注销”,“ExistingConnections”和“RPC批处理启动”。 这给出了一个很好的清洁跟踪输出。

确保选中“TextData”。

您可以将filter添加到“LIKE %%”的跟踪到TextData列,但是这将只包括直接发送到服务器的SQL语句。 如果有存储过程,那么你需要知道哪些存储过程触及你的表格并过滤它们。

如果你光标查询,那么你会得到很多“sp_fetch”的东西。 您需要使用相同的游标IDsearchDECLARE CURSOR语句。

想想看,一个坏的游标循环可以快速插入成千上万的“错误”logging,这可能是这些大增量跳转的原因。

即使插入失败,身份值也会在每次插入时递增。

如果您有一个检查或外键约束,每个失败将增加身份。 如果你有一个“价值太大”插入将失败,但身份将增加。

一般来说,这不是一个问题。 身份字段的目的是为该行提供一个唯一的参考,使其增加很好,没有丢失的数字是一个人“保持整洁”的事情,而不是数据库会不高兴。

更紧迫的问题是为什么你的插入失败,你不知道它…

SQL Server正在重置停止和启动服务的标识列。 有一个连接项目,有人认为这是一个错误,但MS事情这是一个很好的devisefunction。 https://connect.microsoft.com/SQLServer/feedback/details/739013/alwayson-fail

有一个跟踪标志,closures重新join-T272身份的行为,作为一个启动标志将有所帮助。