Почти каждому администратору SharePoint хотя бы раз в жизни приходилось перемещать базы данных на новый сервер или экземпляр SQL Server. Недавно это пришлось делать и мне. Перед вами — составленное и только что протестированное руководство, за правильность которого я ручаюсь.

Совсем недавно я провел ночь, перемещая базы данных одного из заказчиков. Процесс перемещения баз данных описан в статье Microsoft на сайте TechNet (http://technet.microsoft.com/en-us/library/cc512725.aspx). К сожалению, авторы статьи попытались охватить слишком много вариантов и допустили несколько ошибок.

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

Обладателям очень сложной или необычной конфигурации, возможно, придется прочитать статью Microsoft. Но если вы заметите противоречия между статьей и моими рекомендациями, доверьтесь мне, потому что я тестировал свои методы, чего явно не делали авторы статьи.

1. Документирование настроек безопасности базы данных

Необходимо выяснить, какие административные и служебные учетные записи имеют возможность регистрации и разрешения для существующего исходного экземпляра SQL Server и баз данных. Вы обнаружите, что административная учетная запись, учетная запись фермы и учетные записи пула приложений могут регистрироваться на сервере SQL.

Некоторые из этих учетных записей имеют разрешения для сервера/экземпляра; все они располагают разрешениями для базы данных.

Обратите особое внимание на владельца базы данных (DBO) каждой базы данных. Также зафиксируйте, какие пользователи существуют в папке SecurityLogins для каждой базы данных. Полезно документировать все схемы и назначения ролей, но другие сведения, помимо DBO и списка пользователей, необязательны для решения этой задачи.

Также отметьте пользователей в папке SecurityLogins для экземпляра SQL Server. Отметьте роли сервера, назначенные учетным записям.

2. Подготовка целевого сервера SQL Server

Необходимо установить и настроить целевой сервер (или экземпляр) SQL Server. Предполагается, что вы являетесь администратором как исходного, так и целевого экземпляров SQL Server.

Убедитесь, что на целевом сервере созданы учетные записи для администратора и службы, соответствующие исходному серверу, в том числе назначенные роли сервера. Сопоставления пользователей последуют за базами данных.

3. Подготовка серверов SharePoint

Необходимо позаботиться о том, чтобы на каждом сервере SharePoint не было ничего связанного с базами данных фермы. Самый простой способ это сделать — полностью завершить работу сервера.

Если это невозможно, закройте все открытые консоли Windows PowerShell (или SharePoint Management Shell) и окна командной строки. Кроме того, необходимо закрыть все службы, относящиеся к SharePoint.

Выполняя этот шаг, отметьте, какие службы были запущены, а какие нет, чтобы позднее перезапустить нужные службы. Ниже приводится список служб для каждой версии SharePoint (по именам), чтобы можно было воспользоваться командой NET STOP или командой Stop-Service из PowerShell:

SharePoint 2010: W3SVC, SPSearch4, OSearch14, SPWriterV4, SPUserCodeV4, SPTraceV4, SPTimerV4, SPAdminV4, FIMSynchronizationService, FIMService, DCLoadBalancer14, DCLauncher14'

SharePoint 2013: W3SVC, SPSearchHostController, OSearch15, SPWriterV4, SPUserCodeV4, SPTraceV4, SPTimerV4, SPAdminV4, FIMSynchronizationService, FIMService, DCLoadBalancer15, DCLauncher15

Затем откройте окно командной строки от имени администратора и введите команду

IISRESET /STOP

4. Отсоединение баз данных на исходном сервере SQL Server

В среде SQL Server Management Studio (SSMS) щелкните правой кнопкой мыши каждую базу данных SharePoint, выберите пункт Tasks («Задачи»), затем щелкните Detach («Отсоединить»). В диалоговом окне нажмите кнопку OK.

5. Перемещение баз данных на целевой сервер SQL

Переместите базы данных на целевой SQL Server. Потребуются база данных MDF и файлы журнала LDF.

6. Присоединение баз данных к целевому серверу SQL Server.

В среде SSMS щелкните правой кнопкой мыши сервер или экземпляр, затем нажмите Attach («Присоединить»). В диалоговом окне нажмите кнопку Add («Добавить»), затем выберите одну базу данных. Нажмите кнопку OK, чтобы завершить присоединение базы данных. Повторите действие для всех баз данных.

7. Повторное назначение DBO баз данных

При присоединении баз данных к целевому серверу SQL Server учетная запись пользователя становится владельцем (DBO) баз данных. Следует назначать владельца, документированного для исходного экземпляра SQL. В большинстве случаев это учетная запись Farm. Для этого щелкните правой кнопкой мыши базу данных, затем выберите New Query («Создать запрос»). Вставьте следующий запрос:

sp_dropuser «domainusername»
go
sp_changedbowner «domainusername»
go

затем нажмите кнопку Execute («Выполнить»). Первая команда удаляет имя пользователя, если оно уже существует для базы данных (игнорируйте любые ошибки, если его нет).

Без этого шага следующее действие приведет к ошибке. Вторая команда изменяет свойство DBO базы данных.

8. Укажите серверам SharePoint целевой сервер или экземпляр SQL Server.

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

Этот шаг в статье TechNet изложен неверно. Авторы, очевидно, не тестировали его на реальной ферме, ограничившись односерверной фермой с SQL Server, выполняемым на сервере. Недостаточное тестирование!

Правильный способ создать или изменить псевдоним SQL Server следующий.

нажмите кнопку Start («Пуск»), затем Run («Выполнить»). Введите CLICONFG.EXE, затем нажмите RETURN.

На вкладке ALIAS («Псевдоним») щелкните EDIT («Изменить»), чтобы изменить первоначальный псевдоним, если он есть, или нажмите ADD, чтобы добавить новый псевдоним, если его не было.

  • Если это новый псевдоним, введите имя первоначального исходного SQL Server в поле SERVER ALIAS («Псевдоним сервера»). Если изменяется существующий псевдоним, никаких изменений в поле SERVER ALIAS не вносите.
  • В поле SERVER NAME («Имя сервера») введите имя нового целевого SQL Server.
  • В поле NETWORK LIBRARIES («Сетевые библиотеки») выберите TCP/IP.

Не забудьте повторить эти действия на каждом сервере SharePoint.

9. Перезапуск служб SharePoint.

Перезапустите службы SharePoint на каждом сервере SharePoint.

Самый простой способ это сделать — запустить сервер, если он отключен, или перезапустить сервер, если его работа не была завершена ранее.

Если этого сделать нельзя, откройте командную строку от имени администратора и введите команду

IISRESET /START

Затем запустите каждую службу, которая была запущена в порядке, обратном указанному в пункте 3.

Убедитесь, что базы данных функционируют исправно. Готово!