Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Tento článek obsahuje tipy pro vývoj vyhrazených řešení fondu SQL implementací uložených procedur.
Co očekávat
Vyhrazený fond SQL podporuje řadu funkcí T-SQL, které se používají na SQL Serveru. Důležitější je, že existují specifické funkce horizontálního navýšení kapacity, které můžete použít k maximalizaci výkonu vašeho řešení.
Kromě toho, abyste mohli udržovat škálování a výkon vyhrazeného fondu SQL, existují další funkce a funkce, které mají rozdíly v chování.
Představujeme uložené procedury
Uložené procedury představují skvělý způsob zapouzdření kódu SQL, který je uložený blízko dat vyhrazeného fondu SQL. Uložené procedury také pomáhají vývojářům modularizovat svá řešení zapouzdřením kódu do spravovatelných jednotek, což usnadňuje větší opětovnou použitelnost kódu. Každá uložená procedura může také přijímat parametry, aby byly ještě flexibilnější.
Vyhrazený fond SQL poskytuje jednoduchou a efektivní implementaci uložené procedury. Největší rozdíl ve srovnání s SQL Serverem spočívá v tom, že uložená procedura není předem zkompilovaný kód.
Obecně platí, že u datových skladů je doba kompilace v porovnání s časem potřebným ke spouštění dotazů na velké objemy dat malá. Je důležitější zajistit, aby byl kód uložené procedury správně optimalizovaný pro velké dotazy.
Návod
Cílem je ušetřit hodiny, minuty a sekundy, nikoli milisekundy. Proto je vhodné si uložené procedury představit jako kontejnery pro logiku SQL.
Když vyhrazený fond SQL spustí uloženou proceduru, příkazy SQL se analyzují, překládají a optimalizují za běhu. Během tohoto procesu se každý příkaz převede na distribuované dotazy. Kód SQL, který se provádí s daty, se liší od odeslaného dotazu.
Vnoření uložených procedur
Když uložené procedury volají jiné uložené procedury nebo spouštějí dynamické SQL, říká se, že vnitřní uložená procedura nebo vyvolávaný kód je vnořený.
Vyhrazený SQL pool podporuje maximálně osm úrovní vnoření. Naopak, úroveň zanoření v SQL Serveru je 32.
Volání uložené procedury nejvyšší úrovně odpovídá vnoření úrovně 1.
EXEC prc_nesting
Pokud uložená procedura také provede další volání EXEC, úroveň vnoření se zvýší na druhou úroveň.
CREATE PROCEDURE prc_nesting
AS
EXEC prc_nesting_2 -- This call is nest level 2
GO
EXEC prc_nesting
Pokud druhý postup provede nějaké dynamické SQL, úroveň zanoření se zvýší na tři.
CREATE PROCEDURE prc_nesting_2
AS
EXEC sp_executesql 'SELECT 'another nest level' -- This call is nest level 2
GO
EXEC prc_nesting
Vyhrazený fond SQL v současné době nepodporuje @@NESTLEVEL. Proto je potřeba sledovat úroveň vnoření. Je nepravděpodobné, že překročíte limit osmi úrovní vnoření. Pokud to ale uděláte, musíte kód přepracovat tak, aby odpovídal úrovním vnoření v rámci tohoto limitu.
VLOŽIT.. PROVÉST
Vyhrazený fond SQL neumožňuje využívat sadu výsledků uložené procedury pomocí příkazu INSERT. Existuje však alternativní přístup, který můžete použít. Příklad najdete v článku o dočasných tabulkách.
Omezení
Některé aspekty Transact-SQL uložených procedur, které nejsou implementovány ve vyhrazeném fondu SQL, jsou následující:
- dočasné uložené procedury
- číslované uložené procedury
- rozšířené uložené procedury
- Uložené procedury CLR
- možnost šifrování
- možnost replikace
- Parametry tabulkových hodnot
- Parametry jen pro čtení
- výchozí parametry
- kontexty spuštění
- příkaz return