Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Другие серверные продукты (http://forum.oszone.net/forumdisplay.php?f=100)
-   -   [решено] Перенос баз данных MS Sharepoint Server с одного MS SQL на другой (http://forum.oszone.net/showthread.php?t=355071)

sonny362 22-03-2024 14:48 3025661

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

Первое: инструментарий. Безусловно, самый удобный инструмент - SS Management Studio. Но тут кроется засада №1. SSMS надо использовать в строгом соответствии с версией SQL сервера. Если 2017-й, то 18-ю версию SSMS. Если 2019-й, то 19-ю (на днях вышла 20-я, но я её ещё не успел попробовать).
Если переносить базы 2017-го сервера 19-й версией - могут возникнуть неприятные артефакты.
Да, конечно же, донорский и целевой SQL-сервера должны быть одной версии.

Второе: бэкапы. Тут ничего особого говорить не буду: если вы их не делаете перед такими операциями, вам не нужно этим заниматься.

Третье (очевидное): всё надо делать пользователем, входящим в группу "Администраторы", которому на обоих серверах присвоены роли db_backupoperator и db_owner.


Итак. Действие первое (после бэкапов) - останавливаем все службы Sharepoint, IIS и Project Server (если есть). Если что-то не остановите - у вас не отцепятся от SQL сервера базы. Страшного ничего не случится - просто ищите неостановленные службы и пробуйте заново отцепить базы.

Действие второе: отцепляем базы от сервера с помощью SSMS (перечень баз можно увидеть в консоли SharePoint-а командой Get-SPDatabase). Тут есть альтернатива: можно воспользоваться встроенным в SSMS мастером копирования баз. Но он требует поднятого на целевом сервере агента MS SQL. Я делал и так, и так - показалось надёжнее детачить их руками. Хотя бы потому, что нет опасности перепутать в дальнейшем базы на разных серверах.

Действие третье: копируем базы с донорского сервера на целевой. Обычным файловым копированием. На каждую БД должно быть два файла - .mdf и .ldf.

Действие четвёртое: копируем имена входа.
По этой ссылке можно найти скрипт переноса имён входа и паролей. Он довольно сложен, создаёт хранимые процедуры на донорском сервере, что на продакшене делать страшновато.
Как показала практика, он имеет смысл для переноса только имён входа с SQL-аутентификацией. Доменные имена входа можно (и проще) создать руками на новом сервере, беспокоиться за их гранты не надо - они приедут в файлах БД. Ну или у вас стопицот имён входа - тогда гоните скрипт.
В моём случае было 2 реальных пользователя и 6 служебных SharePoint - создал руками.

Действие пятое: аттачим в SSMS базы к новому серверу. Ничего сложного, просто долго и муторно кликаем.

Действие шестое и самое интересное. Сопоставление имён серверов на сервере Sharepoint. В вышеуказанной методичке рекомендуется с помощью утилиты клиента SQL Server cliconfg.exe создать псевдоним - чтобы при обращении к <OLDSQL> подставлялось <NEWSQL>. Это рабочее решение, но мне оно не показалось красивым.
Поэтому я поменял имя сервера в конфигах Sharepoint руками: в C:\ProgramData\Microsoft\SharePoint\Config\ нашёл контекстным пользователем три XML файла со строками connectionString">Data Source=<OLDSQL> и поменял там содержимое на <NEWSQL>. Подозреваю, что хватило бы одного, но правил во всех.
Возможно, это ещё обнаружится в C:\Program Files\AppFabric 1.1 для Windows Server\DistributedCacheService.exe.config - там тоже надо поменять.
Ну и вообще прошерстить регистри поиском <OLDSQL> не вредно будет.

После этого перегружаем сервер Sharepoint и, если мы всё сделали правильно, радуемся.


Время: 06:12.

Время: 06:12.
© OSzone.net 2001-