我们在MSSQL Server 2008数据库中有一个存储过程,该数据库执行大量读写操作以响应用户对网站的操作。
我想知道是否有任何方法可以计算在过程中编辑/创建的行数,最好不必更改过程(尽管可以进行更改)。
有没有人有什么建议?我查看了@@ROWCOUNT
但是这包括读取和写入(我不希望在每次更新后都执行proc并手动添加ROWCOUNT)
编辑:使用System.Data.SqlClient类从
答案 0 :(得分:1)
MS Sql Profiler是你想要开始这样的事情的地方。
答案 1 :(得分:1)
@@ ROWCOUNT将根据最后一次运行语句为您提供计数,因此您可以创建一个本地变量并在每次使用@@ ROWCOUNT后更新它
否则你将不得不进入Profiler并从那里观看,但这不是一个可持续的解决方案,更适合于故障排除。
答案 2 :(得分:1)
如果不编辑proc,最好的办法是启动SQL Server Profiler会话,跟踪SP:StmtCompleted,将ObjectName过滤到proc,并将TextData过滤到要监视的语句。请务必包含RowCount列。
请注意,您无法从extended events sql_statement_completed事件中获取行计数。没有行计数列;只是持续时间,CPU,读写。
如果您可以编辑过程,则可以完全控制行为。您可以总结每个INSERT / UPDATE / DELETE操作的@@ROWCOUNT。此计数可以作为输出参数返回,写入日志,PRINTed,跟踪user-defined trace events,保存到表格等。
答案 3 :(得分:0)
我不知道MySQL,但是Oracle SQL提供了一个名为SQL%ROWCOUNT的变量,它包含前一个事务中影响的行数