回答:
さて、私はあなたがプロファイラークラスについて主に話していると思いますが、説明はとにかく立っています。
SQLバッチは、グループ化され、GOステートメントで区切られた1つ以上のステートメントのセットです。EG:最後にGOがある場合、より多くのSELECTおよびINSERTステートメントがバッチを形成します。
RPC呼び出しは、クライアントアプリケーションからデータベースへの呼び出しです。EG:Windowsサービス、Webアプリケーション、Windowsアプリなど、データベースへの接続が実際に必要なものはすべてRPC呼び出しを行います。
これで、Profilerには、データベースサーバーに関係するすべてのものが表示されます。Management Studioからのバッチ、外部アプリケーションからのRPC呼び出し(バッチまたはストアドプロシージャコール)、Management Studioからのプロシージャ実行。
これらはそれぞれTSQLステートメントで構成されているため、このプロファイラークラスは、実行をさらに拡張して実際に実行されたものを確認する場合に役立ちます。挿入するもの、selects..etc
プロファイラーでそれらを調べる最も簡単な方法は、RPC呼び出しの終了またはバッチ呼び出しの終了のみを有効にして、必要なすべての統計(期間、IO、CPU)を表示することです。次に、TSQL Statementsクラスを有効にしてさらに深く掘り下げます。
バッチとT-SQLステートメント
これは、ここの SQL Server BOL で明確に定義されています
バッチは、実行のためにアプリケーションからSQL Serverに同時に送信される1つ以上のTransact-SQLステートメントのグループです。 Goは、SSMSを含むほとんどのクライアントアプリケーションで使用されるバッチ区切り文字です。
SQL Serverは、バッチのステートメントを、実行プランと呼ばれる単一の実行可能ユニットにコンパイルします。実行計画内のステートメントは、一度に1つずつ実行されます。
私の理解に基づいた簡単な用語では、RPCは、クライアントAPIを使用してストアドプロシージャを実行するときです(例:ADO.net CommandObject。Executeメソッド)
詳細な説明は、インターネットニュースグループの投稿の1つにあります。
「RPC」対「バッチ」は、ADO.NET(または任意のSQL Serverクライアント)が使用するTDS実行モードです。パラメーターのないプレーンなSQLステートメントが実行される場合、「バッチ」を使用します。ストアドプロシージャが実行される場合、 RPCを使用します(これは、スタンドアロンネットワークリモートプロシージャコールとは異なりますが、TDS(SQL Serverネットワークプロトコル)でこのモードのRPCを呼び出すだけです)。また、パラメーターを指定してバッチを実行すると、実際には、sp_executesqlというストアドプロシージャを使用し、SQLステートメント自体と残りのパラメーターを渡すため、RPCとしても表示されます。
Pablo Castro
プログラムマネージャー-ADO.NET Team
Microsoft Corp.
GO
で、使用する一般的なクライアント(SSMSやsqlcmdなど)のデフォルトのバッチターミネーターとして受け入れられますがGO
、バッチターミネーターとしての実際の文字列は変更される可能性があり、構成可能です。