Перемещение файлов в новую версию / экземпляр SQL Server в Always On - PullRequest
0 голосов
/ 13 июня 2019

У меня SQL Server 2014 с включенным Always. Я установил SQL Server 2017 на тот же сервер и хочу переместить базу данных из SQL Server 2014 в SQL Server 2017.

В каждой реплике у меня есть свои файлы (.mdf и .ldf). В SQL Server 2014, в основной я удалил БД из AG, затем я отключил БД. В SQL Server 2017 я успешно подключил его. Я сделал то же самое в средней школе. Когда я пытаюсь добавить базу данных в реплики SQL Server 2017, я получаю сообщение об ошибке, в котором говорится, что вторичный сервер не находится в состоянии восстановления. Я попытался сгенерировать новую резервную копию и восстановить ее как NoRecovery на вторичном сервере, но при повторной попытке он говорит о наличии несоответствий.

Что я делаю не так? Я пытаюсь использовать опцию «Только для присоединения», поскольку в БД более 300 ГБ, и для ее синхронизации потребуется слишком много времени.

1 Ответ

0 голосов
/ 13 июня 2019

Убедитесь, что у вас не запущено задание обслуживания, которое делало резервную копию журнала транзакций до, во время или во время, когда вы пытаетесь добавить базу данных в AG.Это определенно приведет к ошибке несоответствия.В качестве альтернативы графическому интерфейсу (SSMS) после подключения базы данных к экземпляру 2017 года можно использовать сценарии для резервного копирования базы данных db и t на первичном компьютере, вручную скопировать 2 резервные копии на вторичную, а затем восстановить (2) файлы без восстановления, затем запустите 2 команды, чтобы добавить их обратно в AG.Этот способ может быть более полезен для вас, чтобы выяснить, почему вы получаете ошибку несоответствия.Пример кода приведен здесь (не забудьте заменить имена БД и имя AG) -

`При подключении к первичному экземпляру -

Шаг 1) BACKUP DATABASE [MyDatabase] TO DISK = N'\ PrimaryServerName \ C $ \ temp \ MyDatabase.bak' с init, stats = 10

Шаг 2) РЕЗЕРВНОЕ КОПИРОВАНИЕ [MyDatabase] TO DISK = N '\ PrimaryServerName \ C $ \ temp \ MyDatabase.trn'с init, stats = 10

Шаг 3) RDP на основной сервер - вручную скопируйте файлы резервных копий (.bak и .trn) из C: \ temp на первичном компьютере в C: \ temp на вторичном

Шаг 6) ИЗМЕНИТЬ ГРУППУ ДОСТУПНОСТИ [AGGroupName] ДОБАВИТЬ БАЗУ ДАННЫХ [MyDatabase]

При подключении к вторичному экземпляру -

Шаг 4) ВОССТАНОВИТЬ БАЗУ ДАННЫХ [MyDatabase] FROM DISK = N'C: \ temp\ MyDatabase.bak 'WITH FILE = 1, NORECOVERY, NOUNLOAD, STATS = 5

Шаг 5) ВОССТАНОВИТЬ ЛОГ [MyDatabase] FROM DISK = N'C: \ temp \ MyDatabase.trn' С NORECOVERY

Шаг 7) ALTER DATABASE [MyDatabase] SET HADR AVAILABILITY GROUP = [AGGroupName] `

...