在扩展事件中 rpc_completed 和 sql_batch_completed 有什么区别?

Ken*_*her 1 sql-server-2008 sql-server-2008-r2 extended-events sql-server-2012

我理解这rpc_completed被定义为远程过程调用sql_batch_completed的完成,并且是一个 t-sql 批处理的完成。但是,谁能具体解释一下有什么区别?我什么时候应该使用一种,什么时候应该使用另一种?大多数/所有 SQL 命令都会触发这两个事件吗?

Seb*_*ine 5

不同之处在于客户端如何执行命令。客户端可以直接执行一个存储过程,也可以客户端发送一个sql批处理。

要从 .NET 调用存储过程,您将使用

SqlCommand sqlCmd = new SqlCommand();
sqlCmd.CommandType = CommandType.StoredProcedure;
Run Code Online (Sandbox Code Playgroud)

并执行您将使用的批处理

SqlCommand sqlCmd = new SqlCommand();
sqlCmd.CommandType = CommandType.Text;
Run Code Online (Sandbox Code Playgroud)

您还需要设置其他内容,例如连接,但是上面显示了两种执行模式之间的区别。