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

Sql server DbVisualizer 8.0.12执行两次更新,而不是预期的一次更新,sql-server,dbvisualizer,Sql Server,Dbvisualizer,我正在使用DbVisualizer 8.0.12作为MS SQL Server 2012数据库的客户端工具。 我想执行简单的更新: update table1 set field1=0 where filed2='something'; 我希望只更新一行,因为字段2是表1的主键。 此外,做一个: select * from table1 where field2='something'; 只返回一行 但是在执行更新sql时,DBVisualizer通知我有两个更新成功执行 11:16:58

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

update table1 set field1=0 where filed2='something';
我希望只更新一行,因为字段2是表1的主键。
此外,做一个:

select * from table1 where field2='something';
只返回一行

但是在执行更新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]
我不明白为什么要执行两次更新?不应该只有一个更新吗?
有人能给我建议吗?提前感谢您提供的任何信息

[编辑]
正如@TomTom建议的那样,我使用了MS SQL Server profiler。
我还使用MicrosoftSQLServerManagementStudio运行了我的SQL更新

我必须为分析器(以及我的需要)打开的东西是:
1. '跟踪属性>事件选择>列过滤器>数据库名称–例如:my_db_name',因为服务器上有很多数据库,所以为了只跟踪名为“my_db_name”的数据库
2. '跟踪属性>事件选择>存储过程>启用SP:StmtStarting和SP:StmtCompleted',因为我想启用触发器跟踪

来自DBVisualizer的这条信息似乎有误导性(这种情况只发生在具有触发器的表上——在这种特殊情况下,触发器在每次更新时都会将数据插入另一个表(所谓的归档表)。实际上,只进行了一次更新,所以在那里一切正常。
Microsoft SQL Server Management Studio显示正确的信息:1个更新和1个插入

希望这能帮助有类似“问题”的人@TomTom请把你的评论作为回答,这样我就可以给你一个信用。多谢各位

不过,关于Profiler,我还有一件事想知道。
是否有一种方法可以让您实际看到哪些行(在哪个表中)将被更新。
从上面的信息中,我只能看到有一个更新(因此我假设是表1中的这个更新,这是我所期望的)。但是我想在这个表中看到信息,比如:'tablename'这个行:行列表将用这些值或类似的东西更新…

使用探查器可以做到这一点吗?

考虑自己做一些工作。很明显,有两个命令问题。首先用分析器追踪它们,检查它们是否是你认为的那样


SQL Server附带了一个现成的、像样的分析器。当你做这样的事情时,老规矩是:永远不要假设,永远要验证。这些陈述甚至可能不一样。。。只要你不知道。。。。所有这些都是恶意猜测。

我使用了MS SQL Server profiler,正如@TomTom建议的那样。 我还使用MicrosoftSQLServerManagementStudio运行了我的SQL更新

我必须为探查器(以及我的需求)打开的东西有: 1. '跟踪属性>事件选择>列过滤器>数据库名称–例如:my_db_name',因为服务器上有很多数据库,所以为了只跟踪名为“my_db_name”的数据库 2. '跟踪属性>事件选择>存储过程>启用SP:StmtStarting和SP:StmtCompleted',因为我想启用触发器跟踪

来自DBVisualizer的这条信息似乎有误导性(这种情况只发生在具有触发器的表上——在这种特殊情况下,触发器在每次更新时都会将数据插入另一个表(所谓的归档表)。实际上,只做了一次更新,所以一切都很好。 Microsoft SQL Server Management Studio显示正确的信息:1个更新和1个插入

希望这能帮助有类似“问题”的人@TomTom请把你的评论作为回答,这样我就可以给你一个信用。谢谢。
[编辑]
@汤姆
嗯,也许不是。
我想你有足够的时间考虑这件事…
你的回答一点帮助都没有(除了确认形式的一点点光:
“是的,SQL server包含探查器,DAAAH…”
没有你自己的建设性建议,而且有很多“聪明人”。
一个问题的答案应该包括一些更有用的信息和具体的指导(如果有的话),否则,不要太聪明。
由于我在没有你帮助的情况下完成了所有的工作,我认为你实际上不应该为此获得荣誉。
有趣的是,你真的认为你是这样做的。
对此没有任何评论,除了我真的没有(0.000000000000000000000>它会改变吗,嗯,让我想想……000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000……好吧,我想不会>这对你来说有点愚蠢:)容忍像你这样的聪明人的政治。
[编辑结束]

不过,关于Profiler,还有一件事我想知道。 是否有一种方法可以让您实际看到哪些行(在哪个表中)将被更新。 从上面的信息中,我只能看到有一个更新(因此我假设是表1中的这个更新,这是我所期望的)。但我想在这个表中看到信息,比如:'tablename'这个行:行列表将用这些值或类似的东西更新。。。 使用探查器可以实现这一点吗?
提前感谢您的时间和回答

考虑自己做一些工作。很明显,有两个命令问题。用探查器找到它们,并检查它们是否是你认为的那样。好的,谢谢@TomTom的回复。对于MS SQL Server数据库,您有任何可推荐的探查器工具吗?或者它是我不知道的db或DBVisualizer附带的东西?好吧,它是SQL SERVER附带的东西。为什么要忽略你已经拥有的所有工具……我不是忽略它,我只是没有意识到它,因为我以前没有使用过它。此外,谷歌正在对它进行评估,我注意到msdn表示他们将来会反对它。我不明白你为什么有这种居高临下的语气?你想帮忙还是耍聪明?