Was ist der Unterschied zwischen SQL-Batch, T-SQL-Anweisung und Remote Procedure Call?
Wie kann ich feststellen, ob ein Teil des T-SQL-Codes ein Stapel oder eine Anweisung ist?
quelle
Was ist der Unterschied zwischen SQL-Batch, T-SQL-Anweisung und Remote Procedure Call?
Wie kann ich feststellen, ob ein Teil des T-SQL-Codes ein Stapel oder eine Anweisung ist?
Nun, ich nehme an, Sie sprechen hauptsächlich über die Profiler-Klassen, aber die Erklärung steht trotzdem.
Ein SQL-Batch besteht aus einer oder mehreren Anweisungen, die durch eine GO-Anweisung gruppiert und getrennt sind. ZB: Weitere SELECT- und INSERT-Anweisungen bilden einen Stapel, wenn sie am Ende ein GO haben.
Ein RPC-Aufruf ist ein Aufruf, der von einer Clientanwendung an die Datenbank gesendet wird. ZB: Ein Windows-Dienst, eine Webanwendung, eine Windows-Anwendung, was auch immer eine Verbindung zur Datenbank benötigt, führt tatsächlich einen RPC-Aufruf durch.
Jetzt sehen Sie in Profiler alles, was den Datenbankserver berührt. Ein Stapel aus Management Studio, ein RPC-Aufruf (entweder ein Stapelaufruf oder ein Aufruf einer gespeicherten Prozedur) aus einer externen Anwendung, eine Prozedurausführung aus Management Studio.
Jede dieser Anweisungen besteht aus TSQL-Anweisungen. Daher ist diese Profiler-Klasse hilfreich, wenn Sie die Ausführung weiter erweitern möchten, um zu sehen, was tatsächlich ausgeführt wird. Was einfügt, wählt ... usw.
Die einfachste Möglichkeit, sie im Profiler anzuzeigen, besteht darin, nur RPC-Aufruf beenden oder Batch-Aufruf beenden zu aktivieren. Dort werden alle erforderlichen Statistiken (Dauer, E / A, CPU) angezeigt. Bewegen Sie sich dann weiter, indem Sie die Klasse TSQL-Anweisungen aktivieren und tiefer graben.
GO
ist das akzeptierte und standardmäßige Stapelabschlusszeichen der von uns verwendeten gängigen Clients (z. B. SSMS und sqlcmd). Es ist jedoch zu beachten, dass sich die tatsächlicheGO
Zeichenfolge als Stapelabschlusszeichen ändern kann und konfigurierbar ist.Batch vs T-SQL-Anweisung
Dies ist hier in SQL Server BOL klar definiert
Ein Batch ist eine Gruppe von mindestens einer Transact-SQL-Anweisung, die zur Ausführung gleichzeitig von einer Anwendung an SQL Server gesendet wird. Go ist ein Stapeltrennzeichen, das in den meisten Clientanwendungen einschließlich SSMS verwendet wird.
SQL Server kompiliert die Anweisungen eines Stapels in einer einzigen ausführbaren Einheit, einem Ausführungsplan. Die Anweisungen im Ausführungsplan werden dann einzeln ausgeführt.
Nach meinem Verständnis bedeutet RPC, dass Sie einen gespeicherten Prozess über die Client-API ausführen (z. B. in ADO.net CommandObject. Execute-Methode).
Eine ausführlichere Erklärung finden Sie in einer der Internet-Newsgroup-Veröffentlichungen hier :
quelle