Bagikan melalui


Menggunakan SQL Server Profiler untuk membuat dan menguji panduan paket

Berlaku untuk:SQL ServerAzure SQL Database

Saat membuat panduan paket, Anda dapat menggunakan SQL Server Profiler untuk mengambil teks kueri yang tepat untuk digunakan dalam argumen statement_text prosedur tersimpan sp_create_plan_guide . Ini membantu memastikan bahwa panduan paket akan dicocokkan dengan kueri 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 cocok dengan panduan paket 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 paket jenis SQL atau TEMPLAT yang akan cocok dengan teks kueri dengan tepat. Ini memastikan bahwa panduan paket digunakan oleh pengoptimal 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 gabungan, tetapi SHOWPLAN menunjukkan bahwa kueri tidak menggunakan gabungan gabungan. Anda tidak dapat mengubah kueri secara langsung dalam aplikasi, jadi sebagai gantinya Anda membuat panduan paket untuk menentukan bahwa petunjuk kueri MERGE JOIN ditambahkan ke kueri pada waktu kompilasi.

Untuk mengambil teks kueri persis seperti yang diterima SQL Server, ikuti langkah-langkah berikut:

  1. Mulai jejak SQL Server Profiler, pastikan bahwa jenis peristiwa SQL:BatchStarting dipilih.

  2. Minta aplikasi menjalankan kueri.

  3. Jeda Jejak Profiler SQL Server.

  4. Klik peristiwa SQL:BatchStarting yang sesuai dengan kueri.

  5. Klik kanan dan pilih Ekstrak Data Peristiwa.

    Penting

    Jangan mencoba menyalin teks batch dengan memilihnya dari panel bawah jendela jejak Profiler. Ini dapat menyebabkan panduan rencana yang Anda buat tidak cocok dengan batch asli.

  6. Simpan data peristiwa ke file. Ini adalah teks batch.

  7. Buka file teks batch di Notepad dan salin teks ke penyangga salin dan tempel.

  8. Buat panduan paket 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 paket sedang dicocokkan dengan kueri, ikuti langkah-langkah berikut:

  1. Mulai jejak SQL Server Profiler, pastikan bahwa jenis peristiwa XML Showplan dipilih (terletak di bawah simpul Performa ).

  2. Minta aplikasi menjalankan kueri.

  3. Jeda Jejak Profiler SQL Server.

  4. Temukan peristiwa XML Showplan untuk kueri yang terpengaruh.

    Catatan

    Kejadian Showplan XML for Query Compile tidak dapat digunakan. PlanGuideDB tidak ada dalam peristiwa tersebut.

  5. Jika panduan paket berjenis OBJECT atau SQL, verifikasi bahwa peristiwa XML Showplan berisi atribut PlanGuideDB dan PlanGuideName untuk panduan paket yang Anda harapkan cocok dengan kueri. Atau, dalam kasus panduan paket TEMPLAT, verifikasi bahwa peristiwa XML Showplan berisi atribut TemplatePlanGuideDB dan TemplatePlanGuideName untuk panduan rencana yang diharapkan. Ini memverifikasi bahwa panduan rencana berfungsi. Atribut ini terkandung di bawah <elemen StmtSimple> dari rencana.

Lihat Juga

sp_create_plan_guide (T-SQL)