Mar*_*ian 31
好吧,我想您主要是在谈论 Profiler 类,但无论如何解释都成立。
SQL 批处理是一组一个或多个语句组合在一起并由 GO 语句分隔。EG:更多的 SELECT 和 INSERT 语句形成一个批处理,如果它们在末尾有一个 GO。
RPC 调用是从客户端应用程序到数据库的调用。EG:windows 服务、web 应用程序、windows 应用程序,任何需要连接到数据库的东西实际上都会进行 RPC 调用。
现在,在 Profiler 中,您将看到与数据库服务器相关的所有内容。来自 Management Studio 的批处理、来自外部应用程序的 RPC 调用(可以是批处理调用或存储过程调用)、来自 Management Studio 的过程执行。
它们中的每一个都由 TSQL 语句组成,因此如果您想进一步扩展执行以查看实际执行的内容,则此 Profiler 类非常有用。什么插入、选择...等。
在 Profiler 中查看它们的最简单方法是仅启用 End RPC call 或 End batch call,您将在那里看到所需的所有统计信息(持续时间、IO、CPU)。然后,通过启用 TSQL Statements 类并深入挖掘。
SQL*_*ner 17
批处理与 T-SQL 语句
这在 SQL Server BOL here 中有明确定义
批处理是一组一个或多个同时从应用程序发送到 SQL Server 以供执行的 Transact-SQL 语句。 Go是大多数客户端应用程序(包括 SSMS)中使用的批处理分隔符。
SQL Server 将批处理的语句编译成单个可执行单元,称为执行计划。然后一次执行一个执行计划中的语句。
简单来说,根据我的理解,RPC 是当您使用客户端 API 执行存储过程时(例如在 ADO.net CommandObject.Execute 方法中)
更详细的解释可在此处发布的互联网新闻组之一中找到:
RPC” vs “batch” 是 ADO.NET(或任何 SQL Server 客户端)使用的 TDS 执行模式。当执行不带参数的普通 SQL 语句时,我们使用“批处理”。执行存储过程时,我们使用RPC(这和RPC不一样,作为独立的网络远程过程调用,我们恰好在TDS(SQL Server网络协议)中调用了这种模式的RPC)。另外,如果你执行一个带参数的批处理,我们实际上使用了一个名为 sp_executesql 的存储过程,并将 SQL 语句本身和其余参数传递给它,因此它也显示为 RPC。
Pablo Castro
项目经理 - ADO.NET Team
Microsoft Corp.
| 归档时间: |
|
| 查看次数: |
32920 次 |
| 最近记录: |