[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), чтобы убедиться в этом:
ALTER DATABASE [model] SET QUERY_STORE = ON; -- completes successfully!
-- Restart instance to force recreation of [tempdb];
CREATE DATABASE [IsQueryStoreEnabledByDefault];
SELECT * FROM sys.databases WHERE [is_query_store_on] = 1;
DROP DATABASE [IsQueryStoreEnabledByDefault];
И результаты? [model]
и [IsQueryStoreEnabledByDefault]
возвращаются, но [tempdb]
это не в результатах! Таким образом, дополнительный , однако в первых двух « однако» s, кажется , что [model]
может быть включен запрос магазин , который а) по умолчанию Query Stored ВОЗМОЖНОСТЕЙ (да, это слово, я даже проверил ;-) для вновь созданной БД, и б) игнорируется для воссоздания [tempdb]
при запуске службы (следовательно, это не задний ход для его включения [tempdb]
).
[master]
является основной базой данных системы, и здесь не должно быть запущенного кода. Кроме того, хранимые процедуры, которые существуют здесь и часто используются, либо не выиграют от оптимизации, либо выполняются в контексте пользовательской базы данных, где они вызываются (т. Е. Системные хранимые процессы, начиная с, sp_
являются особым случаем, когда они «появляются» во всех БД - не обязательно должны быть полностью квалифицированы [master]..
- и выполняться так, как будто они действительно существуют в каждой БД) и, вероятно, управляются хранилищем запросов в пользовательских базах данных, где они вызываются.
[model]
включением в список "не разрешено".