T-SQL - OPSI (CEPAT x) dan jejak bendera 8722

9

Saya sudah lama mencari dan masih belum menemukan jawaban untuk masalah saya.

Dynamics AX kami menghasilkan kueri dengan OPTION petunjuk petunjuk (FAST x), yang terkadang memaksa rencana eksekusi yang buruk untuk digunakan. Para pengembang mengatakan ini secara default dan sulit untuk diubah (harus diperbaiki pada semua bentuk secara potensial).

Jadi saya mencari cara untuk mengganti petunjuk ini menggunakan jejak jejak. Saya menemukan jejak jejak 8722 yang indah yang diklaim membuat SQL Server mengabaikan beberapa petunjuk permintaan, terutama yang ada di klausa OPSI.

Namun, ini tidak berfungsi dalam kasus saya. Saya mencoba untuk mengaktifkan jejak flag 8602 (menonaktifkan petunjuk indeks) juga, tetapi permintaan saya masih berjalan dengan petunjuk x CEPAT (itu jauh lebih lambat daripada ketika saya benar-benar menghapus klausa OPSI).

Saya mencoba menghapus cache rencana juga, tetapi tidak berhasil.

Ada ide? Apakah saya kehilangan sesuatu?

PS Saya mengaktifkan tanda jejak secara global, ini adalah edisi SQL Server 2012 Developer

Nelson 2.0
sumber
1
Bagaimana Anda mengaktifkan tanda jejak? Apakah Anda menyalakannya melalui startup server atau menggunakan dbcc traceon? dbcc traceon adalah tanda jejak per koneksi, jadi menyalakannya dalam satu koneksi klien tidak mempengaruhi koneksi server lain. Untuk mengaktifkannya di lebar server, Anda perlu menambahkan -T <traceflagnumber> ke baris perintah startup. Saya percaya Anda mungkin dapat menggunakan pelacakan dbcc (flag1, flag2, ..., - 1) untuk menerapkannya di server luas, tapi saya belum pernah mencobanya.
Mike
Halo Mike, saya mengaktifkan tanda jejak global menggunakan DBCC TRACEON (8722, -1) dan kemudian memeriksa status dengan DBCC TRACESTATUS. Mungkin bendera jejak tidak lagi didukung secara resmi atau saya benar-benar perlu memasukkannya ke dalam parameter startup dan me-restart layanan, atau itu adalah subjek CU3 (Saya menjalankan 2012 SP2 RTM).

Jawaban:

10

Sejauh yang saya tahu, jejak bendera 8722, 8755, dan 8602 tidak pernah secara resmi didokumentasikan. Terakhir kali saya ingat mereka menjadi efektif adalah dalam SQL Server 2000, jadi tidak terlalu mengejutkan bahwa Anda menemukan mereka diabaikan dalam SQL Server 2012.

Untuk pola kueri tertentu, sering kali mungkin menghapus FAST npetunjuk menggunakan panduan paket. Meski begitu, perbaikan terbaik adalah untuk mendapatkan pengembang AXE untuk memperbaikinya di sisi aplikasi hal.

Paul White 9
sumber