Дано: допустим у организации развернут SharePoint Foundation 2010 на СУБД Microsoft SQL Server 2008 R2.
Задача: переместить базу данных на SQL Server 2012 (на 2014 нельзя, т.к. SharePoint 2010 ее не поддерживает).
Разобьём решение на несколько шагов.
1) очистка базы данных с целью уменьшить ее объем.
Очищаем все корзины на сайтах SharePoint (Внимание: делаем это действие, только если Вы убедились, что пользователям не понадобится ничего восстанавливать).
Делаем это либо вручную, если сайтов не много, либо можно использовать PowerShell скрипт (если в качестве URL указать сайт верхнего уровня, то будут очищены корзины также всех подсайтов):
Можно также посмотреть, какой сайт SharePoint сколько места занимает, перейдя в "Параметры сайта" (сайт верхнего уровня) - ссылка "Метрики хранилища" (например, с целью очистить ненужный контент):
Также рекомендуется удалить излишние версии файлов в библиотеках.
Например, следующий PowerShell скрипт удаляет все версии файлов во всех библиотеках на всех сайтах, кроме последних 2 версий (не рекомендую запускать скрипт в таком виде, если есть сайты, с которыми пользователи активно работают и версии могут им понадобиться, лучше подредактировать скрипт под конкретный сайт или библиотеку):
2) Останавливаем веб-приложения SharePoint в IIS
Либо вручную каждый сайт (IIS - Site - Manage Web Site - Stop):
Либо все сайты сразу командой в консоли (cmd): iisreset /stop
3) Останавливаем сервисы SharePoint в системе. Необходимо остановить следующие сервисы (Administrative Tools - Services - Service - Stop):
4) уменьшение базы данных и файлов логов SQL Server.
После этого можно сделать попытку уменьшить размер баз данных SQL Server при помощи функции Shrink (Tasks - Shrink - Database или Files):
Показатель Available free space показывает на сколько можно уменьшить базу с помощью этой процедуры.
Также можно сделать усечение журнала транзакций при помощи SQL скрипта:
Если не помогло, то следующий скрипт:
Например, после выполнения этого скрипта на базе SharePoint_AdminContent, ее журнал уменьшился на 7 гигабайт.
5) Делаем Detach всех баз данных на старом SQL Server 2008 (либо можно сделать BackUp): DataBase - Tasks - Detach.
Базы данных:
6) Копируем все файлы баз данных (.mdf, .ldf, .ndf ) на новый сервер в желаемую папку.
7) На новом сервере (SQL Server 2012) создаем логины (пользователей БД), такие же как были на старом сервере, например:
Логин ORG\MSSP_explorer для базы WSS_Search_<ServerName>:
Логин ORG\MSWSS_starter для всех баз:
Логины БД можно создать вручную, либо, например, таким SQL-скриптом:
8) Делаем attach всех скопированных баз данных на новой версии SQL Server 2012
Вручную или SQL скриптом:
9) Проверяем, проассоциировались ли пользователи баз данных с созданными ранее логинами.
Если нет, то выполняем следующий скрипт для каждой базы для "линковки" юзеров базы и логина:
10) Указание нового алиаса. На сервере, где расположено веб-приложение SharePoint, запускаем утилиту "SQL Server Client Network Utility", на вкладке Alias редактируем имеющуюся строку, где прописываем адрес нового сервера, где установлена база данных:
11) Обратно запускаем сервисы, которые были остановлены на шаге 3.
12) Стартуем сайты SharePoint в IIS. Вручную или командой: iisreset /start
13) Пробуем открыть сайт SharePoint в браузере и радуемся, если всё получилось :)
(с) Ella S.
Задача: переместить базу данных на SQL Server 2012 (на 2014 нельзя, т.к. SharePoint 2010 ее не поддерживает).
Разобьём решение на несколько шагов.
1) очистка базы данных с целью уменьшить ее объем.
Очищаем все корзины на сайтах SharePoint (Внимание: делаем это действие, только если Вы убедились, что пользователям не понадобится ничего восстанавливать).
Делаем это либо вручную, если сайтов не много, либо можно использовать PowerShell скрипт (если в качестве URL указать сайт верхнего уровня, то будут очищены корзины также всех подсайтов):
[System.Reflection.Assembly]::LoadWithPartialName("Microsoft.SharePoint"); $url = $args[0]; #адрес SP сайта $site = new-object microsoft.sharepoint.spsite($url); for ($i=0;$i -lt $site.allwebs.count;$i++) { write-host $site.allwebs[$i].url "...deleting" $site.allwebs[$i].recyclebin.count "item(s)."; $site.allwebs[$i].recyclebin.deleteall(); } write-host $site.url "...deleting" $site.recyclebin.count "item(s)."; $site.recyclebin.deleteall(); $site.dispose();
Можно также посмотреть, какой сайт SharePoint сколько места занимает, перейдя в "Параметры сайта" (сайт верхнего уровня) - ссылка "Метрики хранилища" (например, с целью очистить ненужный контент):
Также рекомендуется удалить излишние версии файлов в библиотеках.
Например, следующий PowerShell скрипт удаляет все версии файлов во всех библиотеках на всех сайтах, кроме последних 2 версий (не рекомендую запускать скрипт в таком виде, если есть сайты, с которыми пользователи активно работают и версии могут им понадобиться, лучше подредактировать скрипт под конкретный сайт или библиотеку):
[void][System.Reflection.Assembly]::LoadWithPartialName("Microsoft.SharePoint") $SPsite = new-object Microsoft.SharePoint.SPSite("SHAREPOINT SITE URL") foreach ($SPweb in $SPsite.AllWebs) { write-host $SPweb.url foreach ($SPlist in $SPweb.Lists) { if (($SPlist.BaseType -eq "DocumentLibrary") -and ($SPlist.EnableVersioning)) { $SPlist.MajorVersionLimit = 2 $SPlist.Update() foreach($SPitem in $SPlist.Items) { $SPitem.SystemUpdate($false) } } } } $SPweb.Dispose(); $SPsite.Dispose();
2) Останавливаем веб-приложения SharePoint в IIS
Либо вручную каждый сайт (IIS - Site - Manage Web Site - Stop):
Либо все сайты сразу командой в консоли (cmd): iisreset /stop
3) Останавливаем сервисы SharePoint в системе. Необходимо остановить следующие сервисы (Administrative Tools - Services - Service - Stop):
- SharePoint 2010 Administration
- SharePoint 2010 Timer
- SharePoint 2010 Tracing
- SharePoint 2010 User Code Host
- SharePoint 2010 VSS Writer
- SharePoint Foundation Search V4
- World Wide Web Publishing Service
4) уменьшение базы данных и файлов логов SQL Server.
После этого можно сделать попытку уменьшить размер баз данных SQL Server при помощи функции Shrink (Tasks - Shrink - Database или Files):
Показатель Available free space показывает на сколько можно уменьшить базу с помощью этой процедуры.
Также можно сделать усечение журнала транзакций при помощи SQL скрипта:
use DBName go dbcc shrinkdatabase('DBName', TRUNCATEONLY) GO
Если не помогло, то следующий скрипт:
use [SharePoint_AdminContent_GUID] go ALTER DATABASE [SharePoint_AdminContent_GUID] SET RECOVERY SIMPLE DBCC SHRINKFILE ('SharePoint_AdminContent_GUID_log', 10) ALTER DATABASE [SharePoint_AdminContent_GUID] SET RECOVERY FULL
Например, после выполнения этого скрипта на базе SharePoint_AdminContent, ее журнал уменьшился на 7 гигабайт.
5) Делаем Detach всех баз данных на старом SQL Server 2008 (либо можно сделать BackUp): DataBase - Tasks - Detach.
Базы данных:
- SharePoint_AdminContent_GUID
- SP_Config
- SP_Content
- SP_Logging
- SP_Search_<ServerName>
- WSS_Search_<ServerName>
6) Копируем все файлы баз данных (.mdf, .ldf, .ndf ) на новый сервер в желаемую папку.
7) На новом сервере (SQL Server 2012) создаем логины (пользователей БД), такие же как были на старом сервере, например:
Логин ORG\MSSP_explorer для базы WSS_Search_<ServerName>:
Логин ORG\MSWSS_starter для всех баз:
Логины БД можно создать вручную, либо, например, таким SQL-скриптом:
USE [master] GO CREATE LOGIN [ORG\MSWSS_starter] FROM WINDOWS WITH DEFAULT_DATABASE=[master], DEFAULT_LANGUAGE=[us_english] GO ALTER SERVER ROLE [sysadmin] ADD MEMBER [ORG\MSWSS_starter] GO ALTER SERVER ROLE [securityadmin] ADD MEMBER [ORG\MSWSS_starter] GO ALTER SERVER ROLE [dbcreator] ADD MEMBER [ORG\MSWSS_starter] GO
8) Делаем attach всех скопированных баз данных на новой версии SQL Server 2012
Вручную или SQL скриптом:
sp_attach_db 'DBName','C:\MSSQL\DATA\DBName.mdf','C:\MSSQL\DATA\DBName_log.ldf'
9) Проверяем, проассоциировались ли пользователи баз данных с созданными ранее логинами.
Если нет, то выполняем следующий скрипт для каждой базы для "линковки" юзеров базы и логина:
use DBName go EXEC sp_change_users_login 'Update_One', 'DBUser', 'Login' go
10) Указание нового алиаса. На сервере, где расположено веб-приложение SharePoint, запускаем утилиту "SQL Server Client Network Utility", на вкладке Alias редактируем имеющуюся строку, где прописываем адрес нового сервера, где установлена база данных:
11) Обратно запускаем сервисы, которые были остановлены на шаге 3.
12) Стартуем сайты SharePoint в IIS. Вручную или командой: iisreset /start
13) Пробуем открыть сайт SharePoint в браузере и радуемся, если всё получилось :)
(с) Ella S.
Если Вам понравилась статья, пожалуйста, поставьте лайк, сделайте репост или оставьте комментарий. Если у Вас есть какие-либо замечания, также пишите комментарии.
Комментариев нет :
Отправить комментарий