Přímé spuštění

platí pro:SQL ServerAzure SQL Databaseazure SQL Managed Instanceazure Synapse Analytics

Přímé vykonání je nejzákladnější způsob vykonávání příkazu. Aplikace vytvoří znakový řetězec obsahující Transact-SQL příkaz a odešle jej k vykonání pomocí funkce SQLExecDirect . Když příkaz dorazí na server, SQL Server jej zkompiluje do plánu vykonání a poté okamžitě spustí plán vykonání.

Přímé vykonání je běžně používáno aplikacemi, které vytvářejí a vykonávají příkazy za běhu, a je nejefektivnější metodou pro příkazy, které budou vykonány jednorázně. Nevýhodou mnoha databází je, že SQL příkaz musí být při každém spuštění parsován a zkompilován, což přidává režijní režii, pokud je příkaz vykonán vícekrát.

SQL Server výrazně zlepšuje výkon přímého vykonávání běžně vykonávaných příkazů v multiuživatelských prostředích a použití SQLExecDirect s parametrovými značkami pro běžně vykonávané SQL příkazy může dosáhnout efektivity připraveného vykonání.

Při připojení k instanci SQL Server používá SQL Server nativní klientský ODBC ovladač sp_executesql k přenosu SQL příkazu nebo batch specifikovaného v SQLExecDirect. SQL Server má logiku, která rychle určuje, zda SQL příkaz nebo batch vykonaný s sp_executesql odpovídá příkazu nebo dávkové části, která vygenerovala plán vykonání již existující v paměti. Pokud se shoda najde, SQL Server jednoduše znovu použije stávající plán místo kompilace nového plánu. To znamená, že běžně vykonávané SQL příkazy vykonávané pomocí SQLExecDirect v systému s mnoha uživateli budou těžit z mnoha výhod plánovaného opětovného použití, které byly dostupné pouze uloženým procedurám v dřívějších verzích SQL Server.

Tato výhoda opětovného použití plánů vykonání funguje pouze tehdy, když více uživatelů vykonává stejný SQL příkaz nebo dávku. Postupujte podle těchto programovacích konvencí, abyste zvýšili pravděpodobnost, že SQL příkazy vykonávané různými klienty jsou dostatečně podobné, aby bylo možné znovu použít plány vykonávání:

  • Nezahrnujte datové konstanty do SQL příkazů; místo toho použijte parametrové značky vázané na programové proměnné. Pro více informací viz Používání parametrů příkazu.

  • Používejte plně kvalifikovaná jména objektů. Plány provádění se nepoužívají znovu, pokud nejsou kvalifikovaná jména objektů.

  • Používejte co nejvíce připojení aplikací s použitím společné sady možností spojení a příkazů. Plány provedení generované pro spojení s jednou sadou možností (například ANSI_NULLS) se nepoužívají znovu pro spojení s jinou sadou možností. Ovladač ODBC pro nativního klienta SQL Server a poskytovatel OLE DB pro nativního klienta SQL Server mají oba stejná výchozí nastavení pro tyto možnosti.

Pokud jsou všechny příkazy vykonávané pomocí SQLExecDirect kódovány pomocí těchto konvencí, může SQL Server znovu použít plány vykonání, když se naskytne příležitost.