Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Berlaku untuk: SQL Server
Azure SQL Database
Saat membuat panduan rencana, Anda dapat menggunakan SQL Server Profiler untuk menangkap teks kueri yang tepat untuk digunakan dalam argumen statement_text prosedur tersimpan sp_create_plan_guide. Ini membantu memastikan bahwa panduan rencana akan dicocokkan dengan query pada waktu kompilasi. Setelah panduan paket dibuat, SQL Server Profiler juga dapat digunakan untuk menguji bahwa panduan paket, pada kenyataannya, dicocokkan dengan kueri. Umumnya, Anda harus menguji panduan rencana dengan menggunakan SQL Server Profiler untuk memverifikasi bahwa kueri Anda dipasangkan dengan panduan rencana Anda.
Menangkap teks kueri dengan menggunakan SQL Server Profiler
Jika Anda menjalankan kueri dan mengambil teks persis seperti yang dikirimkan ke SQL Server dengan menggunakan SQL Server Profiler, Anda dapat membuat panduan rencana jenis SQL atau TEMPLATE yang akan sesuai dengan teks kueri tepat. Ini memastikan bahwa panduan rencana digunakan oleh pengoptimalan kueri.
Pertimbangkan kueri berikut yang dikirimkan oleh aplikasi sebagai batch yang berdiri sendiri:
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';
Misalkan Anda ingin kueri ini dijalankan menggunakan operasi penggabungan bergabung, tetapi SHOWPLAN menunjukkan bahwa kueri tidak menggunakan penggabungan tersebut. Anda tidak dapat mengubah kueri secara langsung dalam aplikasi, jadi sebagai gantinya Anda membuat panduan rencana untuk menentukan bahwa hint kueri MERGE JOIN ditambahkan ke kueri pada waktu kompilasi.
Untuk mengambil teks kueri persis seperti yang diterima SQL Server, ikuti langkah-langkah berikut:
Mulailah melacak dengan SQL Server Profiler, pastikan bahwa jenis peristiwa SQL:BatchStarting dipilih.
Minta aplikasi menjalankan kueri.
Hentikan sementara Penelusuran Profiler SQL Server.
Klik peristiwa SQL:BatchStarting yang sesuai dengan kueri.
Klik kanan dan pilih Ekstrak Data Peristiwa.
Penting
Jangan mencoba menyalin teks batch dengan memilihnya dari panel bawah dari jendela pelacakan Profiler. Ini dapat menyebabkan panduan rencana yang Anda buat tidak cocok dengan batch asli.
Simpan data peristiwa ke file. Ini adalah teks batch.
Buka file teks batch di Notepad dan salin teks ke penyangga salin dan tempel.
Buat panduan rencana dan tempelkan teks yang disalin di dalam tanda kutip ('') yang ditentukan untuk argumen @stmt. Anda harus lolos dari tanda kutip tunggal dalam argumen @stmt dengan mendahuluinya dengan tanda kutip tunggal lainnya. Berhati-hatilah untuk tidak menambahkan atau menghapus karakter lain saat Anda menyisipkan tanda kutip tunggal ini. Misalnya, tanggal harfiah '20000101' harus dibatasi sebagai ''20000101''.
Berikut adalah panduan rencananya:
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)';
Panduan paket pengujian dengan menggunakan SQL Server Profiler
Untuk memverifikasi bahwa panduan rencana sedang sesuai dengan pertanyaan, ikuti langkah-langkah berikut:
Mulai jejak SQL Server Profiler, pastikan bahwa jenis peristiwa Showplan XML dicentang (yang berada di bawah simpul Performa).
Minta aplikasi menjalankan kueri.
Hentikan sementara Penelusuran Profiler SQL Server.
Temukan peristiwa Showplan XML untuk kueri yang terpengaruh.
Catatan
Kejadian Showplan XML for Query Compile tidak dapat digunakan. PlanGuideDB tidak ada dalam peristiwa tersebut.
Jika panduan rencana berjenis OBJECT atau SQL, verifikasi bahwa Showplan XML berisi atribut PlanGuideDB dan PlanGuideName untuk panduan rencana yang Anda harapkan cocok dengan kueri. Atau, dalam kasus panduan paket TEMPLAT, verifikasi bahwa event Showplan XML berisi atribut TemplatePlanGuideDB dan TemplatePlanGuideName untuk panduan plan yang diharapkan. Ini memverifikasi bahwa panduan rencana berfungsi. Atribut ini terkandung di bawah <elemen StmtSimple> dari rencana.