Как перенести базы данных SharePoint 2010 на другой SQL сервер

2010-11-09, 02:50 / Argon

В данной статье я поделюсь опытом, полученным в ходе совершения «ошибок трудных» при переносе баз данных SharePoint с одного удаленного сервера SQL на другой.

Компоненты SharePoint

Рассмотрим топологию компонентов SharePoint 2010:

  • Ферма SharePoint
    • База данных конфигурации — единое место, где хранится конфигурация фермы SharePoint, именно здесь содержится информация о других базах данных и серверах приложений. При добавлении нового сервера в ферму SharePoint установщик первым делом спрашивает, к какой базе данных конфигурации подключаться.
    • Базы данных контента — в них хранится содержимое сайтов фермы.
    • Сервера приложений — собственно, это и есть сам SharePoint; состоит из множества служб, одни выполняют обработку HTTP-запросов пользователей, другие — всякие фоновые задания.

Хотя все компоненты SharePoint можно устанавливать на один сервер, лучшей практикой считается разнести сервер приложений и сервер баз данных.

Перемещение баз данных контента

Базы этого типа можно легко мигрировать между серверами БД, достаточно выбранную базу удалить из конфигурации SharePoint (на странице узла администратора /_admin/CNTDBADM.aspx), а затем добавить в конфигурацию уже по новому адресу. Более подробно этот процесс расписан в статье TechNet Move content databases.

Перемещение всех баз данных SharePoint

Как упоминалось выше, SharePoint использует не только легко переносимые базы данных контента, но и центральную базу конфигурации, которая привязана к имени сервера, а потому так просто не переносится.

Хотя в библиотеке TechNet есть статья с названием Move all databases, действия, описанные в ней, не приводят к чистому изменению всех путей к базам данных… В этих путях по-прежнему фигурирует старое имя сервера, а доступ к новому серверу перенаправляется с помощью Alias-a. Это работает, если старый сервер функционирует, либо DNS имя старого сервера теперь ссылается на новый сервер. Но такие костыли не каждого устроят.

Если поискать в интернете, то можно найти такой способ переноса базы данных конфигурации: предлагают после переноса баз данных на новый сервер выполнить команды:

stsadm -o deleteconfigdb
stsadm -o setconfigdb -connect -databaseserver NEWSERVER -databasename SharePoint_Config -farmuser DOMAIN\USER -farmpassword PASSWORD

Но по их выполнению нас ждет разочарование:

Значение не может быть неопределенным.
Имя параметра: str

И мы получим не работающую конфигурацию, и спасет нас только откат на резервную копию базы SharePoint_Config.

Итак, работающий алгоритм переноса всех баз данных SharePoint с одного сервера Microsoft SQL на другой.


1. Резервное копирование всех относящихся к SharePioint баз данных (можно посмотреть на странице узла администратора /_admin/DatabaseStatus.aspx) на старом сервере.

2. Восстановление БД из сделанных резервных копий на новом сервере.

3. Выполнение команды:

c:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\14\BIN\stsadm.exe -o renameserver -oldservername OLDSERVER -newservername NEWSERVER

4. Profit.


Этот алгоритм применим только в том случае, если имя нового сервера в конфигурации SharePoint не упоминается (на странице узла администратора /_admin/FarmServers.aspx), то есть на новом сервере:

  • нет компонентов сервера приложений SharePoint
  • нет других БД SharePoint

Если ваша конфигурация фермы SharePoint не подходит для выполнения приведенного выше алгоритма, её можно привезти к необходимым условиям, выполнив, например,

  1. Установку сервера приложений на другом сервере
  2. Удаление компонент сервера приложений со старого сервера
  3. Чистый перенос баз данных по вышеприведенному алгоритму
  4. Если понадобится, вновь установка компонент сервера приложений на старом сервере, но уже с указанием нового сервера в качестве БД.


5 комментариев

arxont
# Комментарий от 2012-01-03, 06:28

Добрый день! Большое спасибо за статью! Очень помогло! :)

Argon
# Комментарий от 2012-01-09, 00:28

Рад помочь!

Puzzy
# Комментарий от 2012-06-18, 21:31

А как посмотреть что перенос прошёл успешно? и ещё.. БД контента отдельно переносить надо?

Eric
# Комментарий от 2014-12-05, 11:30

Очень годная и простая статья. Большое спасибо. Подходит и для Sharepoint 2013

Eric
# Комментарий от 2014-12-05, 15:03

Единственно не получилось stsadm.exe. Вернее он поменял значение, по после перегрузки все вернулось как было. Прищлось таки использовать алиасы

Добавить комментарий