Sql 统计存储过程编辑的行数
我们在MSSQL Server 2008数据库中有一个存储过程,它执行大量读取和写入操作以响应网站上的用户操作。 我想知道是否有任何方法可以计算在该过程中编辑/创建了多少行,最好不必更改过程(尽管可以进行更改)。 有人有什么建议吗?我查看了Sql 统计存储过程编辑的行数,sql,sql-server-2008,stored-procedures,Sql,Sql Server 2008,Stored Procedures,我们在MSSQL Server 2008数据库中有一个存储过程,它执行大量读取和写入操作以响应网站上的用户操作。 我想知道是否有任何方法可以计算在该过程中编辑/创建了多少行,最好不必更改过程(尽管可以进行更改)。 有人有什么建议吗?我查看了@@ROWCOUNT,但这涉及到读写操作(我不希望在每次更新后都执行该过程并手动累加ROWCOUNT) 编辑:正在使用System.Data.SqlClient类从C#调用该过程。MS Sql事件探查器是这样开始的。@@ROWCOUNT将根据上次运行语句提供计
@@ROWCOUNT
,但这涉及到读写操作(我不希望在每次更新后都执行该过程并手动累加ROWCOUNT)
编辑:正在使用System.Data.SqlClient类从C#调用该过程。MS Sql事件探查器是这样开始的。@@ROWCOUNT将根据上次运行语句提供计数,因此您可以创建一个局部变量,并在每次使用@ROWCOUNT更新它
否则,您将不得不进入Profiler并从那里观察,但这不是一个可持续的解决方案,更适合于故障排除 我不知道MySQL,但Oracle SQL提供了一个名为SQL%ROWCOUNT的变量,该变量包含上一个事务中生效的行数如果不编辑进程,最好是启动SQL Server Profiler会话,跟踪、筛选进程的ObjectName,并将文本数据过滤到要监视的语句中。确保包含RowCount列 请注意,您无法从sql_语句_completed事件中获取行计数。没有行计数列;只有持续时间、CPU、读写
如果您可以编辑该过程,则可以完全控制该行为。您可以总结每次插入/更新/删除操作的结果。此计数可以作为输出参数返回,写入日志,打印,跟踪,保存到表中,等等。我认为这是唯一的方法-在每条语句后生成一个
@ChangeCt
变量并将其递增@@ROWCOUNT
。@@ROWCOUNT
也只根据上次运行的语句给出答案,那么,您是否只报告存储过程中发生的最后一个操作?您使用什么来调用存储过程?我假设您只是没有通过SSM运行它,那么您使用什么语言/库来命名它呢?JAVA那么,是否有任何版本的SQL,其中扩展事件捕获行数?