Dari basis data sistem SQL (master, model, msdb, tempdb), query store hanya dapat digunakan di msdb. Saya mencari dan tidak menemukan dokumentasi tentang permintaan toko di msdb.
Meskipun Anda tidak dapat melihatnya di GUI, itu dapat divalidasi pada contoh SQL 2016 Anda
Validasi Toko Kueri dimatikan
USE msdb
SELECT * FROM sys.database_query_store_options;
Aktifkan Toko Kueri
USE [master]
GO
ALTER DATABASE msdb SET QUERY_STORE = ON
GO
ALTER DATABASE msdb SET QUERY_STORE (OPERATION_MODE = READ_WRITE
, INTERVAL_LENGTH_MINUTES = 30
, MAX_STORAGE_SIZE_MB = 1000
, QUERY_CAPTURE_MODE = AUTO)
GO
Toko Kueri Validasi aktif
USE msdb
SELECT * FROM sys.database_query_store_options;
Dari semua basis data sistem mengapa hanya msdb satu-satunya yang memiliki opsi untuk menggunakan Query Store, dan nilai apa yang ditambahkannya?
-- Stop Query Store
USE [master]
GO
ALTER DATABASE msdb SET QUERY_STORE = OFF
GO
sql-server
sql-server-2016
msdb
query-store
James Jenkins
sumber
sumber
[model]
dimasukkan dalam daftar "tidak diizinkan".Jawaban:
Microsoft mengaktifkan fitur tidak berarti itu akan berguna untuk semua orang. Untuk sistem yang menggunakan beberapa fitur dapat berarti mengandalkan informasi yang disimpan dalam MSDB. Dalam kasus tersebut, Query Store dapat bermanfaat.
Berikut adalah beberapa artikel tentang penggunaan dan pencarian objek database MSDB.
msdb Database dari buku online.
Tuning Kinerja MSDB oleh Geoff N. Hiten
Pentingnya Pemeliharaan pada MSDB oleh Tim Radney di mana ia menyebutkan berikut:
Saya dapat melihat bagaimana toko kueri dapat membantu dalam mengoptimalkan strategi pengindeksan Anda dan secara optimal menanyakan / mengagendakan / membersihkan beberapa informasi yang disimpan dalam MSDB.
sumber
[msdb]
disebutkan dalam kutipan, "proses lain" akan mencakup hal-hal seperti: dbmail, layanan Server Manajemen Pusat (CMS) (paling banyak dibagikan daftar Server Terdaftar), saya pikir seseorang dalam komentar pada posting terkait tersebut menyebutkan Manajemen Berbasis Kebijakan (PBM), dan saya pikir Server Audit (definisi setidaknya, tapi saya belum mengkonfirmasi ini).@SqlWorldWide menjawab bagian "mengapa
[msdb]
" dari pertanyaan jadi saya tidak akan menduplikasinya di sini. Tapi untuk menjawab "mengapa tidak[master]
,[model]
,[tempdb]
" bagian dari pertanyaan:[tempdb]
adalah penyimpanan sementara dan pada dasarnya tidak akan pernah mendapatkan manfaat dari optimasi otomatis atau kemampuan untuk memberikan analisis historis. Jika Query Store melacak statistik eksekusi pada Prosedur Tersimpan, itu tidak akan membantu di sini ketika Prosedur Tersimpan ada di tempat lain. Dan sementara dimungkinkan untuk membuat Prosedur Tersimpan sementara, Procs Tersimpan sementara lokal kemungkinan tidak akan mendapat manfaat dari ini mengingat bahwa nama mereka menyertakan kode hash unik untuk memisahkan nama-nama serupa di beberapa sesi. Dan sementara Global Stored Procs global memiliki nama yang konsisten di seluruh sesi, mengingat sifat sementara, tidak ada cara untuk mengasumsikan bahwa Global sementara Stored Procs dengan nama yang sama di seluruh sesi (menganggap tidak pada saat yang sama) bahkan akan memiliki kode yang sama, dan karenanya tidak dapat diperbaiki makna / statistik.[model]
adalah templat untuk membuat basis data baru (termasuk[tempdb]
, yang akan dibuat kembali setiap kali instance SQL Server dimulai / dimulai ulang). Kueri tidak dieksekusi dari sini. Namun, saya kira itu mungkin masuk akal untuk memungkinkan Query Store untuk diaktifkan sini sehingga ON secara default saat membuat DB baru. Namun, bagaimanapun itu , itu berarti Query Store akan diaktifkan[tempdb]
, dan itu hanya konyol (lihat poin langsung di atas).PEMBARUAN:
Woah, Nelly! Saya baru saja membaca kembali pertanyaan awal yang mengarah ke pertanyaan ini dan menemukan sesuatu yang aneh: hanya ada pesan kesalahan untuk
[master]
dan[tempdb]
; tidak ada kesalahan yang dilaporkan untuk[model]
. Ada kemungkinan bahwa OP hanya meninggalkan pesan kesalahan ketika menyalin ke pertanyaan, jadi saya menjalankan yang berikut ini di SQL Server 2016 SP1-CU7-GDR (13.0.4466.4) untuk melihat sendiri:Dan hasilnya?
[model]
dan[IsQueryStoreEnabledByDefault]
dikembalikan, tapi[tempdb]
ini tidak dalam hasil! Jadi, tambahan namun untuk dua pertama "Namun" s, tampaknya[model]
dapat memiliki Query Toko diaktifkan yang a) default Query Disimpan pemberdayaan (ya, itu kata, saya bahkan memeriksa ;-) untuk DBs yang baru dibuat, dan b) diabaikan untuk penciptaan kembali[tempdb]
pada permulaan layanan (karenanya ini bukan pintu belakang untuk menyalakannya[tempdb]
).[master]
adalah database sistem utama dan Anda seharusnya tidak memiliki kode yang berjalan di sini. Juga, Prosedur Tersimpan yang ada di sini dan sering digunakan baik tidak akan mendapat manfaat dari optimasi, atau mengeksekusi dalam konteks Database Pengguna di mana mereka dipanggil (yaitu sistem disimpan procs dimulai dengansp_
adalah kasus khusus di mana mereka "muncul" di semua DB - tidak perlu sepenuhnya memenuhi syarat dengan[master]..
- dan mengeksekusi seolah-olah mereka benar-benar ada di setiap DB) dan mungkin diatur oleh Query Store di Database Pengguna (s) di mana mereka dipanggil.sumber