Skip to main content

Opgeslagen procedures voor uw SQL Server maken

Help for hacked sites: SQL injection (April 2025)

Help for hacked sites: SQL injection (April 2025)
Anonim

Microsoft SQL Server biedt het opgeslagen proceduremechanisme om het ontwikkelingsproces van de database te vereenvoudigen door Transact-SQL-instructies te groeperen in hanteerbare blokken. Opgeslagen procedures worden gewaardeerd door de meeste SQL Server-ontwikkelaars die vinden dat de efficiëntie en beveiligingsvoordelen die ze verdienen de investering vooraf goed waard zijn.

Voordelen van het gebruik van opgeslagen procedures

Waarom zou een ontwikkelaar opgeslagen procedures gebruiken?

Dit zijn de belangrijkste voordelen van deze technologie:

  • Vooraf gecompileerde uitvoering: SQL Server compileert elke opgeslagen procedure eenmaal en maakt vervolgens opnieuw gebruik van het uitvoeringsplan. Dit resulteert in een enorme prestatieverbetering wanneer opgeslagen procedures herhaaldelijk worden aangeroepen.
  • Minder client / server-verkeer: Als netwerkbandbreedte een probleem is in uw omgeving, leert u graag dat opgeslagen procedures lange SQL-query's kunnen reduceren tot een enkele lijn die via de draad wordt verzonden.
  • Efficiënt hergebruik van code en programmeringsabstractie: Opgeslagen procedures kunnen door meerdere gebruikers en clientprogramma's worden gebruikt. Als u ze op een geplande manier gebruikt, zult u merken dat de ontwikkelingscyclus minder tijd in beslag neemt.
  • Verbeterde beveiligingsmaatregelen: U kunt gebruikers toestemming verlenen om een ​​opgeslagen procedure uit te voeren, onafhankelijk van onderliggende tabelmachtigingen.

Opgeslagen procedures lijken op door de gebruiker gedefinieerde functies, maar er zijn subtiele verschillen.

Structuur

Opgeslagen procedures zijn vergelijkbaar met de constructies die worden gezien in andere programmeertalen.

Ze accepteren gegevens in de vorm van invoerparameters die tijdens de uitvoering zijn opgegeven. Deze invoerparameters (indien geïmplementeerd) worden gebruikt bij de uitvoering van een reeks instructies die een bepaald resultaat opleveren. Dit resultaat wordt teruggestuurd naar de aanroepomgeving door het gebruik van een recordset, uitvoerparameters en een retourcode.

Dat klinkt misschien als een mondvol, maar je zult merken dat opgeslagen procedures eigenlijk vrij eenvoudig zijn.

Voorbeeld

Laten we een praktisch voorbeeld bekijken met betrekking tot de tabel met de naam inventaris die onderaan deze pagina wordt weergegeven. Deze informatie wordt in realtime bijgewerkt en magazijnmanagers controleren constant de niveaus van producten die zijn opgeslagen in hun magazijn en beschikbaar zijn voor verzending. In het verleden voerde elke manager query's uit die op het volgende lijken:

SELECTEER product, hoeveelheidVAN VoorraadWHERE Warehouse = 'FL'

Dit resulteerde in inefficiënte prestaties op de SQL Server. Elke keer dat een magazijnbeheerder de query uitvoerde, werd de databaseserver gedwongen de query opnieuw te compileren en helemaal opnieuw uit te voeren. Het vereiste ook dat de magazijnbeheerder kennis van SQL had en de juiste machtigingen voor toegang tot de tabelinformatie.In plaats daarvan kan het proces worden vereenvoudigd door het gebruik van een opgeslagen procedure. Hier is de code voor een procedure genaamd sp_GetInventory die de voorraadniveaus voor een bepaald magazijn ophaalt.

CREËER PROCEDURE sp_GetInventory@location varchar (10)ZOALSSELECTEER product, hoeveelheidVAN VoorraadWHERE Warehouse = @location

De Magazijnmanager van Florida kan vervolgens de voorraadniveaus openen door de opdracht te geven:

EXECUTE sp_GetInventory 'FL'

De magazijnbeheerder in New York kan dezelfde opgeslagen procedure gebruiken om de inventaris van dat gebied te openen:

EXECUTE sp_GetInventory 'NY'

Toegegeven, dit is een eenvoudig voorbeeld, maar de voordelen van abstractie zijn hier te zien. De magazijnmanager hoeft SQL of de interne werking van de procedure niet te begrijpen. Vanuit het oogpunt van de prestaties werkt de opgeslagen procedure wonderen. De SQL Server maakt eenmaal een uitvoeringsplan en hergebruikt dit vervolgens door de juiste parameters aan te brengen tijdens uitvoeringstijd.Nu u de voordelen van opgeslagen procedures hebt geleerd, kunt u daar naar toe gaan en ze gebruiken.

Probeer een paar voorbeelden en meet de behaalde prestatieverbeteringen - u zult versteld staan!

Voorraad tabel

ID kaartArtikelMagazijnAantal stuks
142Groene bonenNY100
214erwtenFL200
825MaïsNY140
512limabonenNY180
491tomatenFL80
379WatermeloenFL85