Что такое Central Management Server

Central Management Server (CMS) является хранилищем организованного списка управляемых серверов и служит администратору баз данных хорошим подспорьем при управлении несколькими серверами. В качестве CMS подойдет SQL Server версии 2008 и выше и любой редакции, в т.ч. Express. Для того чтобы создать его, нужно в SQL Server Management Studio в окне Registered Servers щелкнуть правой клавишей мыши и выбрать пункт Register Central Management Server.

В появившемся окне нужно всего-лишь вбить имя сервера и сохранить.

Все, теперь CMS создан и готов к использованию.

Таким же образом вы или другой администратор или разработчик может подключиться к уже настроенному CMS и использовать его.

Управление списком серверов в Central Management Server

Теперь мы можем добавлять в CMS наши сервера. Этот процесс такой же, как и добавление серверов в окне Registered Servers. Напоминаю, что в качестве CMS должна использоваться версия не ниже SQL Server 2008, а вот в список серверов для администрирования вы можете добавлять даже 2000 и 2005 версии и, насколько мне известно, хотя я сам лично не проверял, даже версию 7.0.

Например так выглядит добавление группы:

А так добавление сервера:

Можно создавать группы, например по версии сервера, по редакции, по типу использования. Один и тот же администрируемый сервер можно зарегистрировать в нескольких группах для упрощения администрирования. Приведу пример, как может выглядеть один из вариантов группировки. Но вы конечно же можете регистрировать так, как вам удобнее, и как больше подходит для ваших повседневных задач.

Недостатки Central Management Server

На текущий момент существует два недостатка, которые необходимо учитывать при внедрении CMS.

Central Management Server поддерживает только Windows аутентификацию. Соответственно, если в вашей среде есть удаленные SQL сервера, доступ к которым вы имеете только через SQL аутентификацию или SQL Azure сервера, вы не сможете добавить их в общий список. Соответственно, если у вас несколько изолированных доменов, в каждом из которых вас есть экземпляры SQL Server, то ваш единственный выход – использовать несколько CMS, хотя это и не очень удобно.

Также нельзя добавить в список серверов сам Central Management Server. Поэтому обычно Central Management Server развертывают на отдельном экземпляре.

Способы применения Central Management Server

Итак, мы развернули CMS. Теперь давайте подробнее посмотрим, какие функции с помощью него мы можем выполнять.

Выполнение запроса одновременно на группе серверов

С помощью CMS становится очень просто выполнить определенную команду одновременно сразу на нескольких серверах. Для этого вы просто щелкаете правой клавишей мыши на нужной вам группе серверов и выбираете пункт New Query.

Вот тут как раз большое значение будет играть, как вы сгруппировали ваши сервера. И давайте посмотрим на результат простого запроса:

Выполнение административных действий со службами

Щелкая правой клавишей мыши на любом из серверов вы также можете останавливать, запускать и перезапускать службы SQL Server.

CMS как хранилище политик для Policy Based Management

Central Management Server играет ключевую роль, если вы применяете Policy Based Management для контроля и управления несколькими экземплярами SQL Server. Его удобно использовать в качестве центрального хранилища для ваших политик. Подробнее о Policy Based Management вы можете прочитать здесь: Administer Servers by Using Policy-Based Management.

Центральное хранилище списка экземпляров SQL Server

Об этом я уже в кратце говорил, но выделю еще раз. Если в вашей организации несколько человек занимаются администрированием, то очень полезно иметь центральное хранилище списка экземпляров SQL Server. На самом CMS весь список серверов храниться в БД msdb в следующих системных таблицах:

dbo.sysmanagement_shared_registered_servers_internal
dbo.sysmanagement_shared_server_groups_internal

Также имеются 2 системных представления:

dbo.sysmanagement_shared_registered_servers
dbo.sysmanagement_shared_server_groups

Для выдачи прав к CMS существует 2 роли в БД msdb: ServerGroupReaderRole и ServerGroupAdministratorRole. Первая дает доступ на чтение к вышеуказанным представлениям со списком серверов, а вторая дает право на запуск следующих системных процедур, которые служат для управления списком серверов:

dbo.sp_sysmanagement_add_shared_registered_server
dbo.sp_sysmanagement_add_shared_server_group
dbo.sp_sysmanagement_delete_shared_registered_server
dbo.sp_sysmanagement_delete_shared_server_group
dbo.sp_sysmanagement_move_shared_registered_server
dbo.sp_sysmanagement_move_shared_server_group
dbo.sp_sysmanagement_rename_shared_registered_server
dbo.sp_sysmanagement_rename_shared_server_group
dbo.sp_sysmanagement_update_shared_registered_server
dbo.sp_sysmanagement_update_shared_server_group
dbo.sp_sysmanagement_verify_shared_server_type

Соответственно, если вы хотите предоставить членам вашей команды доступ к вашему CMS, вам нужно включать их в соответствующие группы.