Из базы данных системы SQL (master, model, msdb, tempdb) хранилище запросов можно использовать только для msdb. Я посмотрел и не нашел никакой документации о хранилище запросов на MSDB.
Хотя вы не видите его в графическом интерфейсе, его можно проверить на вашем экземпляре SQL 2016
Проверка магазина запросов отключена
USE msdb
SELECT * FROM sys.database_query_store_options;
Включить Query Store
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
Проверка магазина запросов включена
USE msdb
SELECT * FROM sys.database_query_store_options;
Из всей системной базы данных почему msdb единственная с возможностью использовать Query Store, и какое значение она добавляет?
-- Stop Query Store
USE [master]
GO
ALTER DATABASE msdb SET QUERY_STORE = OFF
GO
sql-server
sql-server-2016
msdb
query-store
Джеймс Дженкинс
источник
источник
[model]
включением в список "не разрешено".Ответы:
Microsoft, включающая функцию, не означает, что она будет полезна для всех. Для систем, использующих некоторые функции, это может означать использование информации, хранящейся в MSDB. В этих случаях может быть полезен Query Store.
Вот несколько статей об использовании и настройке объектов базы данных MSDB.
База данных MSDB из книг онлайн.
Настройка производительности MSDB от Джеффа Н. Хитена
Важность Поддержки на MSDB Тимом Радни , где он упомянул следующее:
Я вижу, как хранилище запросов может помочь оптимизировать вашу стратегию индексирования и оптимально запрашивать / агрегировать / очищать некоторую информацию, хранящуюся в MSDB.
источник
[msdb]
указанным в цитате, «другие процессы» будут включать в себя такие вещи, как: dbmail, службы центрального сервера управления (CMS) (наиболее часто используемые списки зарегистрированных серверов), я думаю, что кто-то в комментариях к этому связанному посту упоминал Управление на основе политик (PBM), и я думаю, что аудиты серверов (по крайней мере, определения, но я не подтвердил это).@SqlWorldWide ответил на вопрос «почему
[msdb]
», поэтому я не буду повторять это здесь. Но , чтобы ответить на «почему нет[master]
,[model]
,[tempdb]
» часть вопроса:[tempdb]
является временным хранилищем, и по самой своей природе, кажется, никогда не выиграет ни от автоматизированной оптимизации, ни от возможности проводить исторический анализ. Если Query Store отслеживает статистику выполнения в хранимых процедурах, это не поможет, когда хранимые процедуры существуют в других местах. И хотя можно создавать временные хранимые процедуры, локальные временные хранимые процедуры, скорее всего, не выиграют от этого, учитывая, что их имя содержит уникальный хэш-код для разделения похожих имен между несколькими сеансами. И хотя глобальные временные хранимые прокси имеют одно и то же имя в разных сеансах, учитывая временную природу, нельзя предположить, что глобальные временные хранимые прокси с одним и тем же именем в разных сеансах (предположим, не в одно и то же время) будут иметь один и тот же код, и, следовательно, не может иметь значимого /сопоставимая статистика.[model]
это шаблон для создания новых баз данных (в том числе[tempdb]
, который создается заново при каждом запуске / перезапуске экземпляра SQL Server). Запросы не выполняются отсюда. Тем не менее, я полагаю, что может иметь смысл разрешить Query Store, чтобы он был включен по умолчанию при создании новых БД. Но, как бы то ни было, это будет означать, что Query Store будет включен[tempdb]
, и это просто глупо (см. Пункт выше).ОБНОВЛЕНИЕ:
Вау, Нелли! Я просто перечитал первоначальный вопрос, который привел к этому, и заметил нечто странное: были только сообщения об ошибках для
[master]
и[tempdb]
; не было сообщений об ошибках[model]
. Вполне возможно, что OP просто пропустил это сообщение об ошибке при копировании в вопрос, поэтому я запустил следующее на SQL Server 2016 SP1-CU7-GDR (13.0.4466.4), чтобы убедиться в этом:И результаты?
[model]
и[IsQueryStoreEnabledByDefault]
возвращаются, но[tempdb]
это не в результатах! Таким образом, дополнительный , однако в первых двух « однако» s, кажется , что[model]
может быть включен запрос магазин , который а) по умолчанию Query Stored ВОЗМОЖНОСТЕЙ (да, это слово, я даже проверил ;-) для вновь созданной БД, и б) игнорируется для воссоздания[tempdb]
при запуске службы (следовательно, это не задний ход для его включения[tempdb]
).[master]
является основной базой данных системы, и здесь не должно быть запущенного кода. Кроме того, хранимые процедуры, которые существуют здесь и часто используются, либо не выиграют от оптимизации, либо выполняются в контексте пользовательской базы данных, где они вызываются (т. Е. Системные хранимые процессы, начиная с,sp_
являются особым случаем, когда они «появляются» во всех БД - не обязательно должны быть полностью квалифицированы[master]..
- и выполняться так, как будто они действительно существуют в каждой БД) и, вероятно, управляются хранилищем запросов в пользовательских базах данных, где они вызываются.источник