it-swarm-eu.dev

Rozdíl mezi dávkou SQL, příkazem a RPC?

Jaký je rozdíl mezi dávkou SQL, příkazem T-SQL a vzdáleným voláním procedur?
Jak zjistím, zda je součástí kódu T-SQL dávka nebo příkaz?

36
FrogEye

Předpokládám, že mluvíte hlavně o třídách Profilerů, ale vysvětlení platí stejně.

Dávka SQL je sada jednoho nebo více příkazů seskupených dohromady a oddělených příkazem GO. EG: více příkazů SELECT a INSERT tvoří dávku, pokud mají na konci GO.

Volání RPC je volání, které přichází z klientské aplikace do databáze. EG: služba Windows, webová aplikace, aplikace pro Windows, cokoli, co potřebuje připojení k databázi, skutečně provede volání RPC.

Nyní v Profiler uvidíte vše, co se dotkne databázového serveru. Dávka z Management Studio, volání RPC (které je buď dávkové nebo uložené procedury) z externí aplikace, provedení procedury z Management Studio.

Každý z nich je vytvořen z příkazů TSQL, takže tato třída Profiler je užitečná v případě, že chcete provádění dále rozšířit, abyste viděli, co je skutečně provedeno. Co vloží, vybere..etc.

Nejjednodušší způsob, jak se na ně podívat v Profileru, je povolit pouze ukončení volání RPC nebo ukončení dávkového volání a uvidíte tam všechny potřebné statistiky (trvání, IO, CPU). Poté se přesuňte dále povolením třídy TSQL STATements a Dig hlouběji.

26
Marian

Dávka vs. příkaz T-SQL

To je jasně definováno v SQL Server BOL zde

Dávka je skupina jednoho nebo více příkazů Transact-SQL odeslaných současně z aplikace na SQL Server k provedení. Go je oddělovač šarží používaný ve většině klientských aplikací včetně SSMS.

SQL Server kompiluje příkazy dávky do jediné spustitelné jednotky, která se nazývá plán provádění. Příkazy v plánu provádění jsou poté prováděny po jednom.

Jednoduchým pojmem na základě mého porozumění je RPC, když provedete uložený proc pomocí klientského API (např. V ADO.net CommandObject. Metoda Execute)

Podrobnější vysvětlení najdete v jednom z příspěvků internetové diskusní skupiny zde :

RPC "vs" batch "je režim provádění TDS, který používá ADO.NET (nebo jakýkoli klient SQL Server). Když je spuštěn prostý příkaz SQL bez parametrů, použijeme" dávku ". Když je spuštěn uložený proc, používáme RPC (není to stejné jako RPC jako samostatné volání vzdálené procedury v síti, náhodně voláme tento režim RPC v TDS (síťový protokol SQL Server)). Také pokud provádíte dávku s parametrem, ve skutečnosti používáme uložený proc s názvem sp_executesql a předáváme mu samotný příkaz SQL a zbývající parametry, takže se také zobrazuje jako RPC.

Pablo Castro
Správce programů - tým ADO.NET
Microsoft Corp.

14
SQL Learner