Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/sql-server-2008/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 统计存储过程编辑的行数_Sql_Sql Server 2008_Stored Procedures - Fatal编程技术网

Sql 统计存储过程编辑的行数

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将根据上次运行语句提供计

我们在MSSQL Server 2008数据库中有一个存储过程,它执行大量读取和写入操作以响应网站上的用户操作。 我想知道是否有任何方法可以计算在该过程中编辑/创建了多少行,最好不必更改过程(尽管可以进行更改)。 有人有什么建议吗?我查看了
@@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,其中扩展事件捕获行数?