use*_*785 7 sql sql-server-2005
我有一个表,它使用和标识种子作为其唯一标识列。我们注意到身份值出现了一些我们无法解释的巨大跳跃。该表有 20,000 个奇数行,最大标识值超过 560,000,000,标识增量为 1!
我想使用 SQL Server 探查器来监视该表上的活动,以便我可以看到是什么导致身份大幅增加,但是当我查看监视器时,我立即感到困惑。我承认我很匆忙,没有时间真正了解它是如何工作的(尽我所能),因此可以使用粗略的指南来了解您应该采取哪些步骤来监视桌子上的活动。
任何帮助将不胜感激。
启动 SQL Profiler,创建新跟踪并连接到要监视的 SQL Server。
注意,如果这是非常繁忙的生产服务器,那么您不应该使用 SQL Profiler,因为它会减慢 SQL Server 的速度
我通常使用“标准”配置文件,然后对其进行编辑。
单击“事件选择”选项卡。我通常取消选中“审核登录”、“审核注销”、“现有连接”和“RPC 批量启动”。这提供了一个漂亮干净的跟踪输出。
确保选中“TextData”。
您可以向 TextData 列的“LIKE %%”跟踪添加过滤器,但这只会包括直接发送到服务器的 SQL 语句。如果有存储过程,那么您需要知道哪些存储过程接触您的表并过滤它们。
如果你有游标查询,那么你会得到很多“sp_fetch”的东西。您需要搜索具有相同游标 ID 的 DECLARE CURSOR 语句。
想想看,一个糟糕的游标for循环可以快速插入数千条“错误”记录,这可能是这些大增量跳跃的原因。
即使插入失败,标识值也会在每次插入时递增。
如果您有检查或外键约束,则每次失败都会增加身份。如果“值太大”,则插入将失败,但标识会增加。
一般来说,这不是问题。标识字段的目的是为该行提供唯一的引用,并且让它很好地递增而不丢失数字是人类“保持整洁”的事情,而不是数据库会感到不安的事情。
更紧迫的问题是为什么你的插入失败而你却不知道......
| 归档时间: |
|
| 查看次数: |
18134 次 |
| 最近记录: |