====== Перенос базы QP7.Framework на другой сервер с использованием SQL Mirroring ====== ===== Prerequisites ===== * Опцию **АutoClose** в свойствах исходной базы данных нужно выставить в **false**. * Опция **Recovery Model** должна иметь значение **Full**, а не **Simple**, как по умолчанию (см. [[tasks:backups|Бэкапы баз QP7.Framework]]) ===== Настройка зеркала ===== * Создаем полный бэкап базы данных и восстанавливаем его на новом сервере **под тем же названием** и с выставленной опцией WITH NO RECOVERY. После окончания процесса база должна появиться в списке в состоянии Restoring. Перед созданием бэкапа должны быть обязательно выполненены задачи из раздела Prerequisites. * Создаем бэкап лога транзакций на исходной базе данных и восстанавливаем его на новой БД c опцией WITH NO RECOVERY * Создаем зеркало, запустив для исходной базы мастер настройки Tasks -> Mirror. При этом выбираем конфигурацию без witness-сервера. Остальные настройки оставляем по умолчанию. В конце процесса выбираем Start Mirror. После этого, если все прошло успешно, новая база данных будет какое-то время в состоянии In Recovery, выполняя транзакции, прошедшие с момента последнего бэкапа Transaction Log, а затем перейдет в состоянии Restoring. Исходная база при этом приобретет статус Synchronized. * Добавляем во все Connection String параметр Failover Parnter=<имя нового сервера>; ===== Переключение ===== * Для каждой базы на базе master выполняется запрос ALTER DATABASE AdventureWorks SET PARTNER FAILOVER GO. Полный список запросов лучше подготовить заранее * Чтобы не менять многочисленные Connection Strings создаем Alias в SQL Server Configuration Manager, ссылающийся на новый сервер, а в качестве имени алиаса указать старое имя сервера. Алиас на именованный Instance настраивается через Named Pipes как \\<имя компьютера>\pipe\MSSQL$<имя instance>\sql\query