В данном вебинаре я расскажу о том, что такое индексы, зачем они нужны, какие регламентные операции необходимо выполнять с индексами, а также будут приведены соответствующие скрипты (для MS SQL-Server) для обслуживания индексов баз данных.
Видео в формате вебинара с подробным разбором всех скриптов:
Все переменные в скриптах собраны в соответствующем блоке в начале скриптов. Для отправки электронной почты используется предварительно настроенный профиль электронной почты компоненты DataBase Mail. О настройке компоненты можно прочитать, здесь. Все скрипты много раз опробованы в бою и протестированы на версиях MS SQL 2008, 2012, 2016.
Может случиться так, что в процессе установки MS SQL Server 2012 были установлены компоненты, необходимость в которых со временем отпала (или были установлены по ошибке). В этом случае, в целях…
В данной статье будут рассмотрены способы лицензирования Microsoft SQL Server 2012. Будет приведен краткий обзор каждого из способов лицензирования, а также указаны возможные варианты лицензирования для различных выпусков MS SQL Server…
Ниже приводится список существующих редакций Microsoft SQL Server 2012, а также приводится краткий обзор каждой из них. Microsoft SQL Server 2012 предлагается в нескольких специально разработанных редакциях:…
Спасибо за уроки. Времени читать тягомотину на сайте MS нет, а здесь коротко, наглядно. Да еще и с конкретными примерами. Правда в репозитарий не могу попасть — пустой экран по ссылке.
Здравствуйте. После выполнения вашего скрипта (Обслуживание_индексов_БД.sql) (да и не только вашего скрипта, просто он показал ошибку) на одной из баз получаю сообщение:
Msg 1943, Level 16, State 1, Line 1
The index «_SystemSettings_1» on table «_SystemSettings» cannot be reorganized because page level locking is disabled.
В общем не удалось обслуживание. Что-то с таблицей.
Сталкивались с таким ? Что посоветуете?
Важно! Начиная с версии платформы 8.3.22 необходимо выполнять дефрагментацию индексов по следующему алгоритму:
До дефрагментации индекса необходимо включить страничные блокировки. Пример команды: ALTER INDEX index_name ON table_name SET (ALLOW_PAGE_LOCKS = ON, ALLOW_ROW_LOCKS = ON);
Выполнить дефрагментацию.
Обратно выключить страничные блокировки. Пример команды: ALTER INDEX index_name ON table_name SET (ALLOW_PAGE_LOCKS = OFF, ALLOW_ROW_LOCKS = ON);
Но как это правильно сделать в скрипте тоже не понимаю.
USE [ИмяБазы]
EXEC sp_MSforeachtable ‘ALTER INDEX ALL ON ? SET (ALLOW_PAGE_LOCKS = ON)’
EXEC sp_MSforeachtable ‘ALTER INDEX ALL ON ? SET (ALLOW_ROW_LOCKS= ON)’
GO
после реорганизации
USE [ИмяБазы]
EXEC sp_MSforeachtable ‘ALTER INDEX ALL ON ? SET (ALLOW_PAGE_LOCKS = OFF)’
EXEC sp_MSforeachtable ‘ALTER INDEX ALL ON ? SET (ALLOW_ROW_LOCKS= ON)’
GO
Можно оптимизировать и не делать 2 цикла!
Соответствтенно до реорганизации:
EXEC sp_MSforeachtable ‘ALTER INDEX ALL ON ? SET (ALLOW_PAGE_LOCKS = ON, ALLOW_ROW_LOCKS= ON)’
После:
EXEC sp_MSforeachtable ‘ALTER INDEX ALL ON ? SET (ALLOW_PAGE_LOCKS = OFF, ALLOW_ROW_LOCKS= ON)’
Спасибо за уроки. Времени читать тягомотину на сайте MS нет, а здесь коротко, наглядно. Да еще и с конкретными примерами. Правда в репозитарий не могу попасть — пустой экран по ссылке.
Спасибо за отзыв.
По поводу ссылки, очень странно, пробовал с разных устройств, у меня проблем нет. Попробуйте зайти через мой профиль: https://github.com/Tavalik
Здравствуйте. После выполнения вашего скрипта (Обслуживание_индексов_БД.sql) (да и не только вашего скрипта, просто он показал ошибку) на одной из баз получаю сообщение:
Msg 1943, Level 16, State 1, Line 1
The index «_SystemSettings_1» on table «_SystemSettings» cannot be reorganized because page level locking is disabled.
В общем не удалось обслуживание. Что-то с таблицей.
Сталкивались с таким ? Что посоветуете?
Вот причина: https://its.1c.ru/db/metod8dev#content:5837:hdoc:p3
Важно! Начиная с версии платформы 8.3.22 необходимо выполнять дефрагментацию индексов по следующему алгоритму:
До дефрагментации индекса необходимо включить страничные блокировки. Пример команды: ALTER INDEX index_name ON table_name SET (ALLOW_PAGE_LOCKS = ON, ALLOW_ROW_LOCKS = ON);
Выполнить дефрагментацию.
Обратно выключить страничные блокировки. Пример команды: ALTER INDEX index_name ON table_name SET (ALLOW_PAGE_LOCKS = OFF, ALLOW_ROW_LOCKS = ON);
Но как это правильно сделать в скрипте тоже не понимаю.
USE [ИмяБазы]
EXEC sp_MSforeachtable ‘ALTER INDEX ALL ON ? SET (ALLOW_PAGE_LOCKS = ON)’
EXEC sp_MSforeachtable ‘ALTER INDEX ALL ON ? SET (ALLOW_ROW_LOCKS= ON)’
GO
после реорганизации
USE [ИмяБазы]
EXEC sp_MSforeachtable ‘ALTER INDEX ALL ON ? SET (ALLOW_PAGE_LOCKS = OFF)’
EXEC sp_MSforeachtable ‘ALTER INDEX ALL ON ? SET (ALLOW_ROW_LOCKS= ON)’
GO
спс
Можно оптимизировать и не делать 2 цикла!
Соответствтенно до реорганизации:
EXEC sp_MSforeachtable ‘ALTER INDEX ALL ON ? SET (ALLOW_PAGE_LOCKS = ON, ALLOW_ROW_LOCKS= ON)’
После:
EXEC sp_MSforeachtable ‘ALTER INDEX ALL ON ? SET (ALLOW_PAGE_LOCKS = OFF, ALLOW_ROW_LOCKS= ON)’