В продолжении темы «Что делать если у вас много баз данных, а нужно узнать активность только одной из них», хотелось бы отметить нововведения SQL Server 2016, а именно о возможности выполнения некоторых команд и установки значений для каждой базы в отдельности. Появились такие возможности как:
- Возможность очистить процедурный кэш только для конкретной базы данных. Раньше это можно было сделать либо для всего сервера, либо для конкретного запроса по его plan handle.
- MAXDOP – уровень параллелизма по умолчанию. 0 – будут использоваться настройки сервера. Эта настройка перебивает соответствующую на уровне сервера, однако, подсказки на уровне запросов обладают высшим приоритетом. При этом не забываем, что Resource Governor все равно всех ограничивает сверху. Подробнее о его работе вы можете прочитать тут.
- Parameter Sniffing – включить или выключить. Выключение аналогично trace flag 4136. На уровне запроса этим можно было управлять с помощью подсказки OPTIMIZE FOR UNKNOWN.
- Управление, какую версию Cardinality Estimator использовать (новую, появившуюся в SQL Server 2014, либо предыдущую).
- Оптимизатор запросов со всеми последними обновлениями. Аналог trace flag 4199.
Более подробно об этом пишет Сергей Олонцев в своей статье на русском языке SQL Server 2016: Database Scoped Configuration. Крайне рекомендую к прочтению.