Downgrade Microsoft Sql Server Enterprise to Standard — инструкция на русском
Всем привет, как и всегда, с вами на связи Александр Глебов. В этот раз я расскажу вам о том как сделать Downgrade Microsoft Sql Server Enterprise на версию Standard. Довольно муторная и сложная операция, да и редко кому нужна, но тем не менее, если интересно, читаем далее...
Небольшая предыстория
Работал я одно время в замечательной компании TOPS Consulting (уже говорил об этом на своей странице - "О блоге"). Была у меня тестовая установка CRM 2013 у одного заказчика, в том числе я устанавливал и Microsoft Sql Server. Весь софт я устанавливал который предоставляет заказчик, так вот, мне был предоставлен Microsoft Sql Server 2012 Enterprise. Я его установил на тестовую среду, установил CRM 2013 (как установить рассказывал тут).
Разработчики допилили CRM до нужной кондиции, тестировщики протестировали. В итоге заказчик принял тестовую среду, все рады, все довольны. Встал вопрос о переносе тестовой среды на пром. Вот тут и вскрылась одна особенность, а именно, заказчик предоставил Sql Server 2012 Enterprise который у него не куплен, а куплен у них был ql Server 2012 Standard.
Казалось бы, какие проблемы, установи стандарт и на него поставь CRM (так мне сказал начальник, Илья тебе привет :))) ). Но не тут то было. Дело в том, что CRM сильно завязан на системных базах данных. Там хранятся все системные настройки crm, и чтобы их сохранить мне пришлось ломать голову как сделать Downgrade. Переходим к сути.
Downgrade Microsoft Sql Server Enterprise to Standard
По сути не важно какая у вас причина для даунгрейда, инструкция подойдет всем. Я проводил Downgrade для версии 2012, но думаю, что подойдет и для 2008 и для 2014. Будем придерживаться следующего алгоритма действий:
- Делаем бекап всех баз данных
- Проверка всех баз на включение фич Enterprise редакции
- Проверка версии sql и build number
- Копирование системных баз данных
- Удаляем SQL Server
- Установка новой редакции SQL Server Standard
- Копирование системных баз данных
Делаем бекап всех баз данных
Необходимо сделать резервное копирование всех баз данных включая системные. Это можно сделать при помощи следующего скрипта:
DECLARE @name VARCHAR(50) -- database name
DECLARE @path VARCHAR(256) -- path for backup files
DECLARE @fileName VARCHAR(256) -- filename for backup
DECLARE @fileDate VARCHAR(20) -- used for file name
-- specify database backup directory
SET @path = 'C:\Backup\'
-- specify filename format
SELECT @fileDate = CONVERT(VARCHAR(20),GETDATE(),112)
DECLARE db_cursor CURSOR FOR
SELECT name
FROM master.dbo.sysdatabases
WHERE name NOT IN ('master','model','msdb','tempdb') -- exclude these databases
OPEN db_cursor
FETCH NEXT FROM db_cursor INTO @name
WHILE @@FETCH_STATUS = 0
BEGIN
SET @fileName = @path + @name + '_' + @fileDate + '.BAK'
BACKUP DATABASE @name TO DISK = @fileName
FETCH NEXT FROM db_cursor INTO @name
END
CLOSE db_cursor
DEALLOCATE db_cursor
Проверка всех баз на включение фич Enterprise редакции
Очень важный пункт, если его не выполните, то база может на версии стандарт не запуститься. Бывает так, что какое-то приложение использовало фичи Enterprise редакции sql, и база данных в данном случае не подойдет к версии стандарт. Необходимо сделать проверку на эти фичи. Делается следующим скриптом:
SELECT * FROM sys.dm_db_persisted_sku_features
Скрипт надо запускать на каждой базе. Если база использует фичи Энтерпрайз редакции, то необходимо будет избавится от них. Как избавится зависит в каждом случае по-разному. В данной статье не описывается способ отключения.
Проверка версии sql и build number
ВАЖНЫЙ пункт, так как до такой же версии потом необходимо будет устанавливать sql. Выполните скрипт:
SELECT @@VERSION
Получите примерно такие результаты:
Копирование системных баз данных
Когда производится Downgrade Microsoft Sql Server Enterprise необходимо скопировать в другое место системные базы данных, а именно master, model, msdb (mdf и ldf). Для этого останавливаем sql сервер:
Переходим в расположение системных баз данных, по умолчанию это: C:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\DATA и копируем базы master, model, msdb (mdf и ldf) файлы. Вставляем их в другое безопасное место:
Удаляем SQL Server
Запускаем деинсталлятор через панель управления – программы и компоненты.
Видим такую картинку:
Нажимаем Remove, удалить необходимо только следующие компоненты: инстанс sql и SSIS, SSAS, SSRS, SSDT. Обязательно запомните как назывался инстанс sql. Подчеркнул желтым.
После удаления, необходимо перезагрузить сервер. Перезагружаемся и заходим по пути расположения баз данных, который я приводил выше, видим, что пользовательские базы данных сохранились, а системные удалились, поэтому нам и надо было их скопировать.
Установка новой редакции SQL Server
Запускаем установщик, и устанавливаем sql. Имя инстанса должно быть таким же как было до удаления, компоненты необходимо установить те же, что и удаляли. Системные пути и пути к базам данных должны так же остаться такими же как были до удаления.
После установки необходимо проверить версию, делается это скриптом:
SELECT @@VERSION
После выполнения команды необходимо сравнить версии билдов, если они разные то гуглим какой патч надо поставить, чтобы версии сравнялись. В моем примере у версии Энтерпрайз версия была такая:
Microsoft SQL Server 2012 (SP1) - 11.0.3128.0 (X64)
Dec 28 2012 20:23:12
Copyright (c) Microsoft Corporation
Enterprise Edition (64-bit) on
Windows NT 6.2 <X64> (Build 9200: ) (Hypervisor)
У версии стандарт стала такая:
Microsoft SQL Server 2012 (SP1) - 11.0.3128.0 (X64)
Dec 28 2012 20:23:12
Copyright (c) Microsoft Corporation
Standard Edition (64-bit) on Windows NT 6.2 <X64> (Build 9200: ) (Hypervisor)
Если бы версии билдов отличались, мне бы пришлось искать патч, и уравнивать версии. В моем случае версии совпадают, поэтому перехожу к следующему этапу.
Копирование системных баз данных
Нам необходимо вернуть на место ранее скопированные системные базы. Для этого необходимо остановить sql сервер:
Далее произвести копирование с заменой системные базы:
После копирования запускам sql сервер:
Переходим в SQL Server Management Studio, подключаем к инстансу, и видим, что все настройки стали такими же как были до удаления:
Вот таким образом и происходи Downgrade Microsoft Sql Server Enterprise. У меня получилось только таким способом. Пробовал просто установить на другом компьютере версию стандарт и подсунуть туда системные базы. Ничего не получилось. Возможно где-то допустил ошибку. Тем не менее описанный способ рабочий, пользуйтесь кому надо. Все вопросы и замечания прошу задавать в комментариях.
С уважением, Александр Глебов.
С уважением, Александр Глебов | |
Очень большая просьба пройти этот опрос! | |
Если вам помогла данная статья, вступите пожалуйста в мою группу в контакте. |
Твитнуть |
|
There is a requirement in our project where they want to evaluate if it is possible to downgrade SQL Server from Enterprise to Standard edition and if a server can be decommissioned.
Hello, ste-pashka. Sorry, but i don’t understand you. Can you rephrase your question?
I see your domain in RU zone, maybe we can speak in russian language?
Я так понимаю была установлена версия Standard и были подсунуты системные бвзы из версии Enterprise аналогичной версии.
И какая в конечном итоге версия была установлена?
По базе master получается что Enterprise?
Добрый день. давно это было. Я уже не очень помню.