Share via


Tárolt eljárások használata dedikált SQL-készletekhez a Azure Synapse Analyticsben

Ez a cikk tippeket nyújt a dedikált SQL-készletmegoldások tárolt eljárások implementálásával történő fejlesztéséhez.

Amire számíthat

A dedikált SQL-készlet számos T-SQL-funkciót támogat, amelyeket a SQL Server használ. Ennél is fontosabb, hogy vannak olyan kibővített funkciók, amelyekkel maximalizálható a megoldás teljesítménye.

Emellett a dedikált SQL-készlet skálájának és teljesítményének fenntartásához további funkciók és funkciók is rendelkezésre állnak, amelyek viselkedésbeli eltérésekkel rendelkeznek.

Tárolt eljárások bevezetése

A tárolt eljárások kiválóan alkalmasak az SQL-kód beágyazására, amely a dedikált SQL-készlet adataihoz közel van tárolva. A tárolt eljárások abban is segítenek a fejlesztőknek, hogy a kód kezelhető egységekbe való beágyazásával modulárisan alakítsák ki megoldásaikat, ezáltal megkönnyítve a kód újrafelhasználhatóságát. Minden tárolt eljárás paramétereket is elfogad, hogy még rugalmasabbá tegye őket.

A dedikált SQL-készlet egyszerűsített és egyszerűsített tárolt eljárás-implementációt biztosít. A legnagyobb különbség a SQL Server képest az, hogy a tárolt eljárás nem előre lefordított kód.

Az adattárházak esetében általában a fordítási idő kicsi a nagy adatmennyiségek lekérdezéseinek futtatásához szükséges időhöz képest. Ennél is fontosabb, hogy a tárolt eljáráskód megfelelően legyen optimalizálva nagy lekérdezésekhez.

Tipp

A cél az, hogy órákat, perceket és másodperceket takarítson meg, ne ezredmásodperceket. Ezért hasznos, ha a tárolt eljárásokat SQL-logika tárolójaként tekintjük.

Amikor egy dedikált SQL-készlet végrehajtja a tárolt eljárást, a rendszer futtatáskor elemzi, lefordítja és optimalizálja az SQL-utasításokat. A folyamat során a rendszer minden utasítást elosztott lekérdezésekké konvertál. Az adatokon végrehajtott SQL-kód eltér az elküldött lekérdezésétől.

Tárolt eljárások beágyazása

Ha a tárolt eljárások meghívnak más tárolt eljárásokat, vagy dinamikus SQL-t hajtanak végre, akkor a rendszer a belső tárolt eljárást vagy kódhívást beágyazottnak tekinti.

A dedikált SQL-készlet legfeljebb nyolc beágyazási szintet támogat. Ezzel szemben a SQL Server beágyazás szintje 32.

A legfelső szintű tárolt eljáráshívás az 1. beágyazási szintnek felel meg.

EXEC prc_nesting

Ha a tárolt eljárás egy másik EXEC-hívást is kezdeményez, a beágyazási szint kettőre nő.

CREATE PROCEDURE prc_nesting
AS
EXEC prc_nesting_2  -- This call is nest level 2
GO
EXEC prc_nesting

Ha a második eljárás dinamikus SQL-t hajt végre, a beágyazási szint háromra nő.

CREATE PROCEDURE prc_nesting_2
AS
EXEC sp_executesql 'SELECT 'another nest level'  -- This call is nest level 2
GO
EXEC prc_nesting

A dedikált SQL-készlet jelenleg nem támogatja a @@NESTLEVEL. Ezért nyomon kell követnie a beágyazás szintjét. Nem valószínű, hogy túllépi a nyolc beágyazásszint-korlátot. Ha mégis, át kell dolgoznia a kódot, hogy megfeleljen a beágyazási szinteknek ezen a korláton belül.

BESZÚRÁSA.. VÉGRE

A dedikált SQL-készlet nem teszi lehetővé egy tárolt eljárás eredményhalmazának az INSERT utasítással való felhasználását. Létezik azonban egy alternatív megközelítés is. Példaként tekintse meg az ideiglenes táblákról szóló cikket.

Korlátozások

A Transact-SQL tárolt eljárásainak néhány olyan aspektusa van, amelyek nincsenek implementálva a dedikált SQL-készletben, amelyek a következők:

  • ideiglenes tárolt eljárások
  • számozott tárolt eljárások
  • bővített tárolt eljárások
  • CLR tárolt eljárások
  • titkosítási lehetőség
  • replikációs lehetőség
  • táblaértékű paraméterek
  • írásvédett paraméterek
  • alapértelmezett paraméterek
  • végrehajtási környezetek
  • return utasítás

Következő lépések

További fejlesztési tippekért tekintse meg a fejlesztés áttekintését.