DbVisualizer 8.0.12执行两次更新,而不是预期的一次更新

时间:2014-05-28 09:22:26

标签: sql-server dbvisualizer

我使用DbVisualizer 8.0.12作为MS SQL Server 2012数据库的客户端工具 我想进行简单的更新:

update table1 set field1=0 where filed2='something';

我希望只更新一行,因为field2是table1的主键 另外,做一个:

select * from table1 where field2='something';

只返回一行。

但是在执行update sql时,DBVisualizer通知我已成功执行了两个更新。

11:16:58  [UPDATE - 1 row(s), 0.003 secs]  Command processed
11:16:58  [UPDATE - 1 row(s), 0.003 secs]  Command processed
... 2 statement(s) executed, 2 row(s) affected, exec/fetch time: 0.006/0.000 sec  [2 successful, 0 warnings, 0 errors]

我不明白为什么要进行两次更新?不应该只有一次更新吗? 请问有人可以提供建议吗?提前感谢您提供任何信息。

[编辑]
我已经使用了MS SQL Server分析器,正如@TomTom建议的那样 我还使用Microsoft SQL Server Management Studio运行SQL更新。

我必须为探查器(以及我的需要)打开的东西是:
1.'跟踪属性>事件选择>列过滤器>数据库名称 - 如:my_db_name',因为我们在服务器上有很多db,所以为了只跟踪名为'my_db_name'的数据库
2.'跟踪属性&gt;事件选择&gt; <存储过程>启用S​​P:StmtStarting和SP:StmtCompleted',因为我想启用触发器跟踪

似乎来自DBVisualizer的此信息消息具有误导性(这仅适用于具有触发器的表 - 在此特定情况下,触发器在每次更新时将数据插入另一个表(所谓的归档表))。实际上,只进行了一次更新,所以一切都很好 Microsoft SQL Server Management Studio显示正确的信息:1次更新和1次插入。

希望这会帮助有类似“问题”的人。 @TomTom请把你的评论作为答案,所以我可以给你信任。谢谢。

不过,我还想了解一下关于Profiler的事情 有没有办法可以真正看到哪些行(在哪个表中)将被更新 根据我上面的信息,我只能看到有一个更新(所以我假设它是table1上的这个,我期望)。但是我希望在这个表中看到类似的信息:'tablename'这些行:行列表将使用这些值或类似的内容进行更新...
使用Profiler可以实现吗?

2 个答案:

答案 0 :(得分:0)

考虑自己做一些工作。很明显,有2个命令问题。 Fist跟踪它们 - 使用分析器 - 并检查它们是否符合您的想法。

SQL Server带有一个体面的开箱即用的分析器。当你做这样的事情时的旧规则:永远不要假设,总是验证。这些陈述甚至可能都不一样......只要你不知道......所有这些都是一种猜测。

答案 1 :(得分:0)

我已经使用了MS SQL Server分析器,正如@TomTom建议的那样。 我还使用Microsoft SQL Server Management Studio运行SQL更新。

我必须为探查器(以及我的需求)打开的东西是: 1.跟踪属性&gt;事件选择&gt;列过滤器&gt;数据库名称 - 比如:my_db_name&#39;,因为我们在服务器上有很多数据库,所以为了只跟踪名为&#39; my_db_name&#39;的数据库。 2.&#39;跟踪属性&gt;事件选择&gt; <存储过程>启用S​​P:StmtStarting和SP:StmtCompleted&#39;,因为我想启用触发器跟踪

似乎来自DBVisualizer的此信息消息具有误导性(这仅适用于具有触发器的表 - 在此特定情况下,触发器在每次更新时将数据插入另一个表(所谓的归档表))。实际上,只进行了一次更新,所以一切都很好。 Microsoft SQL Server Management Studio显示正确的信息:1次更新和1次插入。

希望这能帮助有类似问题的人#34; @TomTom请把你的评论作为答案,所以我可以给你信任。谢谢。
[编辑]
@TomTom
嗯,也许不是。
我觉得你有足够的时间考虑它...... 你的回答根本没有帮助(除了确认形式的光线之外:
&#34;是的,SQL服务器包含了探查器,DAAAH ...&#34;
没有你自己的建设性建议,而且很多人都是聪明的&#34;的家伙)。
问题的答案应包括一些更有用的信息和具体的指导,如果你有,否则,不是一个聪明的人。 由于我在没有你帮助的情况下完成了所有的工作,我认为你实际上并不值得赞扬 有趣的是,你实际上认为你这样做 没有评论,除​​了我真的有ZERO(0.000000000000000000000&gt;它会改变,嗯,让我们看看... 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000 ...好吧,我猜不是&gt;那对你来说有点聪明:)宽容政治与你一样聪明。
[编辑结束]

不过,还有一件事我想了解一下Profiler。 有没有办法可以实际看到哪些行(在哪个表中)将被更新。 根据我上面的信息,我只能看到有一个更新(所以我假设它是table1上的这个,我期望)。但我希望在此表中看到类似的信息:&#39; tablename&#39;这些行:行列表将使用这些值或类似的值进行更新... 这可能与Profiler有关吗? 提前感谢您的时间和答案。