Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
Vonatkozik a következőkre:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
Analitikai Platform System (PDW)
SQL adatbázis a Microsoft Fabric-ben
Az SQL Server tárolt eljárása egy vagy több Transact-SQL utasításcsoport, vagy egy Microsoft .NET-keretrendszer közös futtatókörnyezeti módszerére (CLR) való hivatkozás. Az eljárások más programozási nyelvek szerkezeteihez hasonlítanak, mert a következőkre képesek:
Fogadja el a bemeneti paramétereket, és adjon vissza több értéket kimeneti paraméterek formájában a hívó programnak.
Olyan programozási utasításokat tartalmaz, amelyek műveleteket hajtanak végre az adatbázisban. Ezek a kijelentések más eljárások meghívását is tartalmazzák.
Állapotértéket ad vissza egy hívóprogramnak, amely jelzi a sikeres vagy sikertelen műveletet (és a hiba okát).
A tárolt eljárások használatának előnyei
Az alábbi lista az eljárások használatának néhány előnyét ismerteti.
Csökkentett kiszolgáló-/ügyfélhálózati forgalom
Az eljárás parancsai egyetlen kódkötegként lesznek végrehajtva. Ez a megközelítés jelentősen csökkentheti a kiszolgáló és az ügyfél közötti hálózati forgalmat, mert csak az eljárás végrehajtására irányuló hívás érkezik a hálózaton keresztül. Az eljárás által biztosított kódbefoglalás nélkül minden egyes kódsornak át kell haladnia a hálózaton.
Fokozott biztonság
Több felhasználó és ügyfélprogram is végrehajthat műveleteket az alapul szolgáló adatbázis-objektumokon egy eljáráson keresztül, még akkor is, ha a felhasználók és programok nem rendelkeznek közvetlen engedélyekkel az alapul szolgáló objektumokra. Az eljárás szabályozza a végrehajtott folyamatokat és tevékenységeket, és védi az alapul szolgáló adatbázis-objektumokat. Ez a megközelítés kiküszöböli az engedélyek megadásának követelményét az egyes objektumok szintjén, és leegyszerűsíti a biztonsági rétegeket.
Az EXECUTE AS záradék megadható az CREATE PROCEDURE utasításban, hogy lehetővé tegye egy másik felhasználó megszemélyesítését, vagy lehetővé tegye a felhasználók vagy alkalmazások számára bizonyos adatbázis-tevékenységek végrehajtását anélkül, hogy közvetlen engedélyekre lenne szükségük az alapul szolgáló objektumokra és parancsokra. Néhány művelet TRUNCATE TABLE például nem rendelkezik engedélyekkel. A végrehajtáshoz TRUNCATE TABLEa felhasználónak rendelkeznie ALTER kell a megadott táblához tartozó engedélyekkel. Ha felhasználói ALTER engedélyeket ad egy táblához, az nem feltétlenül ideális, mert a felhasználó hatékonyan rendelkezik olyan engedélyekkel, amelyek jóval túlmutatnak a táblák csonkolásának képességén. Ha az TRUNCATE TABLE utasítást beépíti egy modulba, és megadja, hogy a modul olyan felhasználóként legyen végrehajtva, aki rendelkezik a tábla módosításához szükséges engedélyekkel, akkor lehetővé teheti, hogy az a felhasználó, akinek a modulra EXECUTE engedélyeket ad, rendelkezzen a tábla csonkításához szükséges engedélyekkel is.
Amikor egy alkalmazás eljárást hív meg a hálózaton keresztül, csak az eljárás végrehajtására irányuló hívás látható. Ezért a rosszindulatú felhasználók nem láthatják a tábla- és adatbázis-objektumok nevét, nem ágyazhatnak be Transact-SQL saját utasításokat, és nem kereshetnek kritikus adatokat.
Az eljárásparaméterek használata segít az SQL-injektálási támadások elleni védelemben. Mivel a paraméterbemenetet nem végrehajtható kódként, hanem konstans értékként kezelik, a támadók nehezebben szúrnak be parancsokat a Transact-SQL utasításokba az eljáráson belül, és veszélyeztetik a biztonságot.
Az eljárásokat titkosítva elrejtheti a forráskódot. További információ: SQL Server-titkosítás.
Kód újrafelhasználása
Az ismétlődő adatbázis-műveletek kódja tökéletes választás az eljárásokba való beágyazáshoz. Ez a módszer kiküszöböli ugyanannak a kódnak a szükségtelen újraírását, csökkenti a kód inkonzisztenciaét, és lehetővé teszi, hogy minden felhasználó vagy alkalmazás hozzáférjen a kódhoz és végrehajtsa a szükséges engedélyekkel.
Egyszerűbb karbantartás
Amikor az ügyfélalkalmazások eljárásokat hívnak meg, és az adatbázis-műveleteket az adatszinten tartják, csak frissítenie kell az alapul szolgáló adatbázis módosításainak eljárásait. Az alkalmazásszint külön marad, és nem kell tudnia az adatbázis-elrendezések, kapcsolatok vagy folyamatok változásairól.
Jobb teljesítmény
Alapértelmezés szerint az eljárás az első végrehajtáskor lefordítja, és létrehoz egy végrehajtási tervet, amelyet a későbbi végrehajtásokhoz újra felhasznál. Mivel a lekérdezésfeldolgozónak nem kell új tervet létrehoznia, általában kevesebb időt vesz igénybe az eljárás feldolgozása.
Ha jelentős változások történnek az eljárás által hivatkozott táblákban vagy adatokban, az előre összeállított terv miatt az eljárás lassabban fog végbe haladni. Ebben az esetben az eljárás újrafordítása és egy új végrehajtási terv kényszerítése javíthatja a teljesítményt.
Tárolt eljárások típusai
User-defined
Felhasználó által definiált eljárás létrehozható felhasználó által definiált adatbázisban vagy az adatbázis kivételével minden Resource rendszeradatbázisban. Az eljárás a Transact-SQL-ben vagy egy .NET-keretrendszer közös futtatókörnyezeti (CLR) metódusára való hivatkozásként fejleszthető ki.
Temporary
Az ideiglenes eljárások a felhasználó által meghatározott eljárások egy formája. Az ideiglenes eljárások olyanok, mint egy állandó eljárás, kivéve, hogy a rendszer tárolja őket.tempdb Az ideiglenes eljárásoknak két típusa van: helyi és globális. A nevükben, a láthatóságukban és a rendelkezésre állásukban különböznek egymástól. A helyi ideiglenes procedúrák neveinek első karaktere egyetlen számjellel (#) rendelkezik. Csak az aktuális felhasználói kapcsolaton láthatók, és a kapcsolat bezárásakor törlődnek. A globális ideiglenes eljárásoknak két számjelük van (##) a nevük első két karaktereként. A létrehozásuk után minden felhasználó láthatja őket, és az eljárás használatával az utolsó munkamenet végén törlődnek.
System
A rendszer eljárásai az adatbázismotor részét képezik. Fizikailag a belső, rejtett Resource adatbázisban vannak tárolva, és logikailag jelennek meg minden sys rendszer által definiált és felhasználó által definiált adatbázis sémájában. Emellett az adatbázis rendszer msdb által tárolt eljárásokat is tartalmaz a dbo sémában, amelyek a riasztások és feladatok ütemezéséhez használatosak. Mivel a rendszerműveletek az előtaggal sp_kezdődnek, ne használja ezt az előtagot a felhasználó által definiált eljárások elnevezéséhez. A rendszereljárások teljes listájáért tekintse meg a rendszer által tárolt eljárásokat.
Az SQL Server támogatja azokat a rendszereljárásokat, amelyek interfészt biztosítanak az SQL Serverről a külső programokhoz különböző karbantartási tevékenységekhez. Ezek a kiterjesztett eljárások az előtagot xp_ használják. A kiterjesztett eljárások teljes listáját az Általános kiterjesztett tárolt eljárások című témakörben találja.
Kiterjesztett felhasználó által definiált
A kiterjesztett eljárások lehetővé teszik külső rutinok létrehozását egy olyan programozási nyelven, mint a C. Ezek az eljárások olyan DLL-ek, amelyeket az SQL Server egy példánya dinamikusan betölthet és futtathat.
Note
A kiterjesztett tárolt eljárások az SQL Server egy későbbi verziójában lesznek eltávolítva. Ne használja ezt a funkciót az új fejlesztési munkában, és a lehető leghamarabb módosítsa a funkciót jelenleg használó alkalmazásokat. Hozzon létre helyette CLR-eljárásokat. Ez a módszer robusztusabb és biztonságosabb alternatívát kínál a kiterjesztett eljárások írásához.
Kapcsolódó tevékenységek
| Tevékenység leírása | Article |
|---|---|
| A tárolt eljárás létrehozásának módját ismerteti. | Tárolt eljárás létrehozása |
| A tárolt eljárás módosításának módját ismerteti. | Tárolt eljárás módosítása |
| A tárolt eljárások törlésének módját ismerteti. | Tárolt eljárás törlése |
| A tárolt eljárás végrehajtásának módját ismerteti. | Tárolt eljárás végrehajtása |
| Azt ismerteti, hogyan adhat engedélyeket egy tárolt eljáráshoz. | Engedélyek megadása tárolt eljáráshoz |
| Azt ismerteti, hogyan lehet adatokat visszaküldeni egy tárolt eljárásból egy alkalmazásba. | Tárolt eljárásból származó adatok visszaadása |
| A tárolt eljárás újrafordítását leírja. | Tárolt eljárás újrafordítása |
| A tárolt eljárások átnevezésének módját ismerteti. | Tárolt eljárás átnevezése |
| A tárolt eljárás definíciójának megtekintését ismerteti. | Tárolt eljárás definíciójának megtekintése |
| A tárolt eljárás függőségeinek megtekintését ismerteti. | Tárolt eljárás függőségeinek megtekintése |
| A paraméterek tárolási eljárásban való használatát ismerteti. | Parameters |