Нам нужно создать автоматизированный процесс для клонирования небольших баз данных SQL Server, но в целевой базе данных все первичные ключи должны отличаться от исходного (мы используем идентификаторы UNIQUEIDENTIFIER для всех первичных ключей).У нас есть тысячи баз данных, которые имеют одну и ту же схему, и нам нужно использовать этот процесс «клонирования» для создания новых баз данных с сопоставлением всех неключевых данных, но с сохранением ссылочной целостности.
Существует ли простой способсделать это?
Обновление - Пример:
Каждая база данных имеет ~ 250 транзакционных таблиц, которые необходимо клонировать.Рассмотрим следующий простой пример нескольких таблиц и их взаимосвязей (каждая таблица имеет первичный ключ UniqueIdentifier = id):
location
doctor
doctor_location (to doctor.id via doctor_id, to location.id via location_id)
patient
patient_address (to patient.id via patient_id)
patient_medical_history (to patient.id via patient_id)
patient_doctor (to patient.id via patient_id, to doctor.id via doctor_id)
patient_visit (to patient.id via patient_id)
patient_payment (to patient.id via patient_id)
Причина, по которой нам нужно клонировать базы данных, заключается в том, что офисы выкупаются или меняютсявладение (из-за изменений в партнерстве это происходит относительно часто).Когда это происходит, налоговая и страховая информация меняется для офиса.Юридически это требует совершенно новой корпоративной структуры, а финансовые показатели между офисами должны быть полностью разделены.
Однако большинство офисов хотят сохранить всю историю своих пациентов, поэтому они решили «клонировать» базу данных.Новая база данных будет лишена финансовой истории, но все данные пациента / врача будут сохранены.Старая база данных будет иметь всю информацию вплоть до точки «клонирования».
Причина, по которой требуются новые идентификаторы GUID, заключается в том, что мы объединяем все базы данных в единую реляционную базу данных для целей отчетности.Поскольку все транзакционные таблицы имеют идентификаторы GUID, это прекрасно работает ... за исключением случаев клонов.
Наше единственное решение до сих пор состояло в том, чтобы выгрузить базу данных в текстовый файл и найти и заменить GUID.Это смехотворно отнимает много времени, поэтому надеялись на лучший путь.