Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Dit artikel bevat tips voor het ontwikkelen van toegewezen SQL-pooloplossingen door opgeslagen procedures te implementeren.
Wat u kunt verwachten
Toegewezen SQL-pool ondersteunt veel van de T-SQL-functies die worden gebruikt in SQL Server. Belangrijker is dat er uitschaalspecifieke functies zijn die u kunt gebruiken om de prestaties van uw oplossing te maximaliseren.
Om u te helpen bij het onderhouden van de schaal en prestaties van een toegewezen SQL-pool, zijn er aanvullende functies en functionaliteiten die gedragsverschillen hebben.
Introductie van opgeslagen procedures
Opgeslagen procedures zijn een uitstekende manier voor het inkapselen van uw SQL-code, die dicht bij uw toegewezen SQL-poolgegevens wordt opgeslagen. Opgeslagen procedures helpen ontwikkelaars ook bij het modulariseren van hun oplossingen door de code in beheerbare eenheden in te kapselen, waardoor de herbruikbaarheid van code wordt vergemakkelijkt. Elke opgeslagen procedure kan ook parameters accepteren om ze nog flexibeler te maken.
Toegewezen SQL-pool biedt een vereenvoudigde en gestroomlijnde implementatie van opgeslagen procedures. Het grootste verschil ten opzichte van SQL Server is dat de opgeslagen procedure geen vooraf gecompileerde code is.
Over het algemeen is de compilatietijd voor datawarehouses klein in vergelijking met de tijd die nodig is om query's uit te voeren op grote gegevensvolumes. Het is belangrijker om ervoor te zorgen dat de opgeslagen procedurecode correct is geoptimaliseerd voor grote query's.
Hint
Het doel is om uren, minuten en seconden te besparen, niet milliseconden. Het is dus handig om opgeslagen procedures te beschouwen als containers voor SQL-logica.
Wanneer een toegewezen SQL-pool uw opgeslagen procedure uitvoert, worden de SQL-instructies tijdens runtime geparseerd, vertaald en geoptimaliseerd. Tijdens dit proces wordt elke instructie geconverteerd naar gedistribueerde query's. De SQL-code die wordt uitgevoerd op basis van de gegevens, verschilt van de query die is verzonden.
Geneste opgeslagen procedures
Wanneer opgeslagen procedures andere opgeslagen procedures aanroepen of dynamische SQL uitvoeren, wordt de interne opgeslagen procedure of code-aanroep genest.
Toegewezen SQL-pool ondersteunt maximaal acht nestniveaus. Het nestniveau in SQL Server is daarentegen 32.
De opgeslagen procedure op het hoogste niveau is gelijk aan nestniveau 1.
EXEC prc_nesting
Als de opgeslagen procedure ook een andere EXEC-aanroep doet, wordt het nestniveau verhoogd tot twee.
CREATE PROCEDURE prc_nesting
AS
EXEC prc_nesting_2 -- This call is nest level 2
GO
EXEC prc_nesting
Als de tweede procedure vervolgens een dynamische SQL uitvoert, wordt het nestniveau verhoogd tot drie.
CREATE PROCEDURE prc_nesting_2
AS
EXEC sp_executesql 'SELECT 'another nest level' -- This call is nest level 2
GO
EXEC prc_nesting
De toegewijde SQL-pool ondersteunt momenteel geen @@NESTLEVEL. Daarom moet u het nestniveau bijhouden. Het is onwaarschijnlijk dat u de limiet voor acht nestniveaus overschrijdt. Maar als u dat wel doet, moet u uw code herwerken om te passen in de niveaus van geneste structuren binnen deze limiet.
INVOEGEN.. EXECUTEREN
Met een toegewezen SQL-pool kunt u de resultatenset van een opgeslagen procedure met een INSERT-instructie niet gebruiken. Er is echter een alternatieve benadering die u kunt gebruiken. Zie voor een voorbeeld het artikel over tijdelijke tabellen.
Beperkingen
Er zijn enkele aspecten van Transact-SQL opgeslagen procedures die niet zijn geïmplementeerd in een toegewezen SQL-pool. Dit zijn als volgt:
- tijdelijke opgeslagen procedures
- genummerde opgeslagen procedures
- uitgebreide opgeslagen procedures
- Opgeslagen CLR-procedures
- versleutelingsoptie
- replicatieoptie
- parameters met tabelwaarde
- parameters met het kenmerk Alleen-lezen
- standaardparameters
- uitvoeringscontexten
- retourinstructie
Volgende stappen
Zie ontwikkelingsoverzicht voor meer ontwikkelingstips.