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.
van toepassing op:SQL Server
Azure SQL Database-
Wanneer u een planhandleiding maakt, kunt u SQL Server Profiler gebruiken om de exacte querytekst vast te leggen voor gebruik in het argument statement_text van de sp_create_plan_guide opgeslagen procedure. Dit helpt ervoor te zorgen dat de planhandleiding op het moment van compileren overeenkomt met de query. Nadat de planhandleiding is gemaakt, kan SQL Server Profiler ook worden gebruikt om te testen of de planhandleiding in feite overeenkomt met de query. Over het algemeen moet u planhandleidingen testen met behulp van SQL Server Profiler om te controleren of uw query overeenkomt met uw planhandleiding.
Querytekst vastleggen met behulp van SQL Server Profiler
Als u een query uitvoert en de tekst precies vastlegt zoals deze is verzonden naar SQL Server met behulp van SQL Server Profiler, kunt u een planhandleiding maken van het type SQL of SJABLOON die exact overeenkomt met de querytekst. Dit zorgt ervoor dat de plangids door de query-optimizer wordt gebruikt.
Bekijk de volgende query die door een toepassing wordt verzonden als een zelfstandige batch:
SELECT COUNT(*) AS c
FROM Sales.SalesOrderHeader AS h
INNER JOIN Sales.SalesOrderDetail AS d
ON h.SalesOrderID = d.SalesOrderID
WHERE h.OrderDate BETWEEN '20000101' and '20050101';
Stel dat u deze query wilt uitvoeren met behulp van een samenvoegbewerking, maar SHOWPLAN geeft aan dat de query geen samenvoeging gebruikt. U kunt de query niet rechtstreeks in de toepassing wijzigen. In plaats daarvan maakt u een planhandleiding om op te geven dat de hint voor de MERGE JOIN-query tijdens het compileren aan de query wordt toegevoegd.
Als u de tekst van de query precies wilt vastleggen zoals SQL Server deze ontvangt, voert u de volgende stappen uit:
Start een SQL Server Profiler-tracering en zorg ervoor dat het SQL:BatchStarting gebeurtenistype is geselecteerd.
Laat de toepassing de query uitvoeren.
De SQL Server Profiler-tracering onderbreken.
Klik op de gebeurtenis SQL:BatchStarting die overeenkomt met de query.
Klik met de rechtermuisknop en selecteer Gebeurtenisgegevens extraheren.
Belangrijk
Probeer de batchtekst niet te kopiƫren door deze te selecteren in het onderste deelvenster van het traceringsvenster van Profiler. Dit kan ertoe leiden dat de planhandleiding die u maakt, niet overeenkomt met de oorspronkelijke batch.
Sla de gebeurtenisgegevens op in een bestand. Dit is de batchtekst.
Open het batchtekstbestand in Kladblok en kopieer de tekst naar de buffer kopiƫren en plakken.
Maak de planhandleiding en plak de gekopieerde tekst tussen de aanhalingstekens ('') die is opgegeven voor het argument @stmt. Je moet elk enkel aanhalingsteken in het argument @stmt escapen door er een extra aanhalingsteken voor te plaatsen. Zorg ervoor dat u geen andere tekens toevoegt of verwijdert wanneer u deze enkele aanhalingstekens invoegt. Bijvoorbeeld, de letterlijke datum '20000101' moet worden afgebakend als ''20000101''.
Dit is de planhandleiding:
EXEC sp_create_plan_guide
@name = N'MyGuide1',
@stmt = N'<paste the text copied from the batch text file here>',
@type = N'SQL',
@module_or_batch = NULL,
@params = NULL,
@hints = N'OPTION (MERGE JOIN)';
Planhandleidingen testen met behulp van SQL Server Profiler
Voer de volgende stappen uit om te controleren of een planhandleiding overeenkomt met een query:
Start een SQL Server Profiler-tracering en zorg ervoor dat het Showplan XML gebeurtenistype is geselecteerd (dat zich onder het knooppunt Performance bevindt).
Laat de toepassing de query uitvoeren.
De SQL Server Profiler-tracering onderbreken.
Zoek de Showplan XML-gebeurtenis voor de betrokken query.
Notitie
De gebeurtenis Showplan XML for Query Compile kan niet worden gebruikt. PlanGuideDB- bestaat niet in dat geval.
Als de planhandleiding van het type OBJECT of SQL is, controleert u of de gebeurtenis Showplan XML- de PlanGuideDB- en PlanGuideName kenmerken bevat voor de planhandleiding die u verwachtte overeen te komen met de query. Of controleer in het geval van een TEMPLATE planhandleiding of de gebeurtenis Showplan XML de attributen TemplatePlanGuideDB en TemplatePlanGuideName bevat voor de verwachte planhandleiding. Hiermee wordt gecontroleerd of de planhandleiding werkt. Deze kenmerken bevinden zich onder het <StmtSimple-> element van het plan.