У нас есть большая база данных (100 ГБ) в нашей производственной среде и два зеркала. мы используем репликацию для синхронизации нашей зеркальной базы данных (репликация транзакций на SQL Server 2012).
когда мы создали репликацию, наш администратор базы данных сначала загрузил полную резервную копию с наших серверов и восстановил ее на сервере-зеркале, а затем настроил репликацию между издателем (производственная база данных) и подписчиком (зеркало-1). Все работает нормально, зеркало и производство синхронизированы идеально.
перед каждым выпуском мы должны тестировать нашу систему на нашем сервере UAT с REAL! данные. поэтому мы создаем резервную копию с одного из наших зеркальных серверов (локальное зеркало) и восстанавливаем ее в нашей базе данных UAT.
Все таблицы в нашей базе данных имеют один ПК, например:
[ID] [int] IDENTITY(1,1) NOT NULL
В нашей базе данных UAT последняя запись таблицы OrderTransaction ID = 160.000.000, но когда наше приложение пытается вставить в эту таблицу, система обнаруживает проблему и возникает исключение.
Нарушение ограничения PRIMARY KEY «ID». Невозможно вставить повторяющийся ключ в объект ...
система пытается вставить целочисленное значение меньше 160.000.000 (ID = 145.695.000), поскольку я запросил базу данных, этот идентификатор является последним идентификатором, когда резервная копия производственной базы данных была восстановлена в зеркальную базу данных и после того, как началась репликация транзакций. вся информация о производстве и зеркалировании синхронизируется правильно, а идентификаторы таблиц на обоих серверах одинаковы и идентичны.
Когда я запускаю эту команду в UAT или в зеркальной базе данных, она возвращает 145.695.000.
SELECT IDENT_CURRENT( 'OrderTransaction' )
когда я читаю MSDN, блоги и связанный с этим вопрос SO, эта проблема связана с репликацией и столбцами идентификации.
Но как я могу заставить нашу зеркальную базу данных увеличивать свою идентичность с производственной (и принимать это значение как значение локальной идентичности). Или, может быть, мы должны написать сценарий, который повторно заполняет каждую таблицу для тестирования в нашей среде UAT !?
благодаря.