1

我们在 MSSQL Server 2008 数据库中有一个存储过程,它执行大量读取和写入以响应网站上的用户操作。我想知道是否有任何方法可以计算在该过程中编辑/创建了多少行,最好不必更改 proc(尽管可以更改)。有没有人有什么建议?我看了看,@@ROWCOUNT但涵盖了读取和写入(而且我不希望通过 proc 并在每次更新后手动添加 ROWCOUNT)

编辑:使用 System.Data.SqlClient 类从 C# 调用 proc

4

4 回答 4

1

MS Sql Profiler 是您想要开始进行此类操作的地方。

于 2013-07-05T14:21:10.037 回答
1

@@ROWCOUNT 将根据上次运行语句为您提供计数,因此您可以创建一个局部变量并在每次使用 @@ROWCOUNT 后更新它

否则,您将不得不进入 Profiler 并从那里观看,但这不是一个可持续的解决方案,更适合故障排除。

于 2013-07-05T14:33:34.260 回答
1

在不编辑 proc 的情况下,最好的办法是启动 SQL Server Profiler 会话,跟踪SP:StmtCompleted,将 ObjectName 过滤到您的 proc,并将 TextData 过滤到您要监视的语句。请务必包括 RowCount 列。

请注意,您无法从扩展事件sql_statement_completed 事件中获取行数。没有行数列;只是持续时间,CPU,读取和写入。

如果您可以编辑过程,您将完全控制行为。您可以总结每个 INSERT/UPDATE/DELETE 操作的@@ROWCOUNT。此计数可以作为输出参数返回、写入日志、打印、使用用户定义的跟踪事件进行跟踪、保存到表等。

于 2013-07-05T15:38:41.673 回答
0

我不知道 MySQL,但是 Oracle SQL 提供了一个名为 SQL%ROWCOUNT 的变量,其中包含在前一个事务中影响的行数

于 2013-07-05T14:48:19.673 回答