Aracılığıyla paylaş


USE PLAN Query ipucu işaretçiler içeren sorgular kullanma

Belirttiğiniz sorguları kullanın planla sorgu ipucunu kullanabilirsiniz imleç istekleri.Aşağıdaki tablo imleci API sunucu imleçler için USE planla ile desteklenen kaydırma seçenekleri birleşimlerini gösterirTransact-SQLİmleç kullananTransact-SQLSözdizimi, genişletilmiş veTransact-SQLİmleç kullanan ISO sözdizimi.

Kaydırma seçeneği (API sunucu imleçler için değer @ scrollopt)

USE API sunucu imleçler için desteklenen planla

Genişletilmiş Transact-SQL sözdizimi kullanan Transact-SQL imleç desteklenen planla kullanın

ISO sözdizimini kullanmak için Transact-SQL imleç desteklenen planla kullanın

STATİK

Y

Y

uygulanamaz

DİNAMİK

N

N

uygulanamaz

ANAHTAR KÜMESİ

N

N

uygulanamaz

FORWARD_ONLY

N

N

uygulanamaz

FAST_FORWARD

Y

Y

uygulanamaz

FORWARD_ONLY STATİK

uygulanamaz

Y

uygulanamaz

BÜYÜK KÜÇÜK HARF DUYARLI

uygulanamaz

uygulanamaz

Y

İmleç sorgularla işaretçiler gönderilen sorguları ile ilgili tek planı yerine, kendileriyle ilişkilendirilmiş iki sorgu planları vardır.Bu planlar, OPEN, alma veya imleç türüne bağlı olarak, REFRESH türünde olabilir.

Bir imleç için iki planlardan birini doğrudan giriş sorgudan oluşturulur ve diğer plan otomatik olarak oluşturulur.Bu planlar sırasıyla giriş Sorgu planını ve oluşturulan planı denir.Aşağıdaki tabloda FAST_FORWARD ve (INSENSITIVE) statik imleçler için oluşturulan planlarını gösterir.

imleç türü

Açık imleç planı

Alıp imleç planı

Yenileme imleç planı

FAST_FORWARD

uygulanamaz

Giriş sorgu

Oluşturulan

STATİK

Giriş sorgu

Oluşturulan

uygulanamaz

İmleci bir sorgu için XML sorgu planları bazen iki planları içeren tek bir XML belge görünür.Bu planlar iki bölümü planları verilir.

Bir imleç için planlar, bazen iki ayrı planı görünür., Örneğin, birSQL Server Profilerstatik bir API izlemesi veyaTransact-SQLimleç sorgu planı, bu iki farklı görebilirsinizgösterim planı XML sorgusu için derleme olayları oluşturulur.Yalnızca giriş sorgu (OPEN) planı plan zorlamak için bu önemlidir.Bir PLAN kullanın İpucu giriş Sorgu planını kullanmanız gerekir.Basit oluşturulan (FETCH) planı da oluşturulur ancak, değil gerekli veya plan zorlamak için izin.Bu ilk toplayan planı olduğu için giriş (Aç) sorgu planını tanıyabileceği küme imleç sorgu eşleşen satır.

Important noteImportant Note:

Olmayan bir zorlama çalışmayın imleç planlama bir imleç sorgu veya tam tersine.Bu, noncursor sorgu ve imleç sorgu aynı olsa bile zorlama planı başarısız olabilir.

İmleç planları tanımlayan XML sorgu planı çıkış türlerine özgü imleç türleri için bir plan USE PLAN ile zorlamak için kullanılabilir:

  • İki aşamalı plan için imleç

  • Bir parça giriş Sorgu planını imleç

İmleç planı, zorunlu bir XML sorgu planı elde etmek için aşağıdaki mekanizmaları herhangi biri üzerinden alınan bir plan olabilir:

  • XML tabanlıSQL Server Profilerolayları izleme.Bu olaylar içerebilirgösterim planı XMLgösterim planı XML sorgusu için derlemeve gösterim planı XML istatistikleri profil .

  • küme SHOWPLAN_XML GÖRE

  • İSTATİSTİK XML AÇIK

  • Dinamik yönetim görünümü ve aşağıdaki sorgu gibi işlevleri:

    SELECT *
    FROM sys.dm_exec_query_stats 
    CROSS APPLY sys.dm_exec_query_plan(plan_handle)
    

API sunucu imleci uygulamalar tarafından kullanımı gözleme

Sık sık etkileşimde olan DB Kitaplığı'nı, ODBC, ADO ve OLEDB uygulamalarıSQL Serverkullanarak API imleç.You can see the calls that are submitted to API server cursor stored procedures by examining the SQL Server ProfilerRPC:Starting events when an application that is built by using one of these interfaces is running.

Örnek: imleç içeren bir sorgu, bir plan zorlama

Bu örnek, bir uygulama ile etkileşim kullandığınızı varsayarAdventureWorkskullanarak, ODBC imleçler ve veritabanı için gönderilen sorgu planı zorlamak istediğinizSQL Serverkullanarak bir API imleç yordamına girildi.Plan zorlamak için imleç yordamı API yoluyla gönderilen sorgu için bir plan toplamak ve plan bu sorgu için zorlamak için bir plan kılavuzu oluşturun.Sorguyu yeniden çalıştırın ve bunu zorunlu olduğunu doğrulamak için plan inceleyin uygulama vardır.

1. Adım: Planı toplamak

Başlangıç birSQL Server Profilerizlemek ve seçmekgösterim planı XML ve RPC: Başlangıç olayları. Uygulamanın olması yürütmek planı zorlamak istediğiniz sorguyu.TıklatınRPC: Başlangıç oluşturulan olay. VarsayalımRPC: Başlangıç olay aşağıdaki metin verisi yok:

DECLARE @p1 int
SET @p1=-1
DECLARE @p2 int
SET @p2=0
DECLARE @p5 int
SET @p5=8
DECLARE @p6 int
SET @p6=8193
DECLARE @p7 int
SET @p7=0
EXEC sp_cursorprepexec @p1 OUTPUT,@p2 OUTPUT,NULL,N'SELECT * FROM Sales.SalesOrderHeader h, Sales.SalesOrderDetail d WHERE h.SalesOrderID = d.SalesOrderID AND h.OrderDate BETWEEN ''20030101'' AND ''20040101''',@p5 OUTPUT,@p6 OUTPUT,@p7 OUTPUT
SELECT @p1, @p2, @p5, @p6, @p7

Sağ tıklatarak sorgu planı toplamakgösterim planı XML izleme olayı sorgu sp_cursorprepexecyukarıdaki deyim ve daha sonra seçerek Olay veri Ayıklabağımsız değişken olarak görüntülenen giriş Sorgu planını içeren.Olay veri (XML gösterim planı) bir dosyaya kaydetCursorPlan.SQLPlan temel Masaüstü.Dosya kopyalamaCursorPlan.SQLPlan to CursorPlan.txt.InSQL Server Management StudioaçınCursorPlan.txt içinde bir düzenleyici penceresinde.Daha sonra saat kaydetme, kullanmaBul ve Değiştir yerine her tek tırnak işareti ( ' ) plandaki dört tek tırnak işareti ( '' '' ). KaydetmeCursorPlan.txt.

2. Adım: Planı zorlamak için plan kılavuzu oluşturma

Oluşturma bir plan kılavuzu yazma ve yürütme aşağıdakisp_create_plan_guidebildirimi zorunlu planı.Bu plan kılavuzu tanımı önceki adımda bir plan kılavuzu USE PLAN sorgu İpucu yakalanan XML planı içerir.

İçeriğini yapıştırmak, bu plan kılavuzu tanımı yazmakCursorPlan.txt uygun konumu ile @hintsbağımsız değişkeni (hemen sonra OPTION(USE PLAN N'').

exec sp_create_plan_guide 
@name = N'CursorGuide1',
@stmt = N'SELECT * FROM Sales.SalesOrderHeader h, Sales.SalesOrderDetail d WHERE h.SalesOrderID = d.SalesOrderID AND h.OrderDate BETWEEN ''20030101'' AND ''20040101''',
@type = N'SQL',
@module_or_batch = NULL,
@params = NULL,
@hints = N'OPTION(USE PLAN N''<ShowPlanXML xmlns=''''https://schemas.microsoft.com/sqlserver/2004/07/showplan'''' Version=''''0.5'''' Build=''''9.00.1116''''><BatchSequence><Batch><Statements><StmtSimple>
   …
</StmtSimple></Statements></Batch></BatchSequence></ShowPlanXML>'')'

3. Adım: Sorgu planı Kılavuzu It için uygulanan kullanan doğrulayın ve

Uygulamanın sorguyu yeniden çalıştırın ve kullanarak, XML yürütme planı toplamakXML gösterim planı olay in SQL Server Profiler.

TıklatınXML gösterim planı olay için planı. Plan, plan kılavuzda zorunlu olduğunu göreceksiniz.

Parametreli imleç sorgular

If the API server cursor query that you want to create a plan guide for is parameterized, make sure you include both the statement string and the parameter definition string you see in the SQL Server ProfilerRPC:Starting event in the plan guide definition.Parametre tanımlama dizesini gereklidir de başarılı plan kılavuzu eşleştirme, yalnızca gönderilen kullanarak parametreleştirilmiş sorguları ile olduğu gibi eldeSp_executesql.