Синхронизация 4-х столбцов в SQL Server - PullRequest
1 голос
/ 04 апреля 2011

Это моя проблема:

У меня есть старая база данных, без каких-либо ограничений.Есть несколько таблиц, которые я копирую из старой базы данных в новую.Эта копия проста, и я запускаю ее ежедневно ночью на задании.

В моей новой базе данных (прекрасно с ограничениями) я создал все эти свободные таблицы в ограничении с основной таблицей.все эти таблицы имеют ключ из 3ID и строку.

Моя основная таблица переведет эти 3ID и строку в 1 ID, поэтому в этой таблице будет 5 столбцов.

В свободных таблицах некоторые записи могут быть двойными, поэтому для вставки идентификаторовв основной таблице я взял бы 3 идентификатора и строку и вставил их в основную таблицу.

Таблицы в старой базе данных обновляются ежедневно.копия запускается ежедневно, и из основной таблицы я хотел бы установить отношение «один ко многим» со скопированными таблицами.

Это вызывает у меня проблему:

как мнеобновить основную таблицу, ничего не делать с уже вставленными ключами и добавить новые ключи?Не удаляйте старые ключи, если они удалены из старой базы данных.

Я думал о том, чтобы сделать четкое представление обо всех ключах в старой базе данных, но как мне обновить это до основной таблицы?Это должно быть выполнено до ежедневного копирования других таблиц (или это не сработает из-за ограничений)

Еще одна идея состоит в том, чтобы запустить это обновление главной таблицы в Linq-to-SQL на моем веб-сайте, ноэто не кажется очень чистым.

Короче говоря:

  • Старая БД - это SQL Server 2000
  • Новая БД - это SQL Server 2008

  • Старый БД не имеет ограничений, копирование некоторых таблиц происходит ежедневно.

  • Должна быть главная таблица, переводящая ключ 3ID и 1string вКлюч 1ID с ограничением для других таблиц.

  • Основная таблица должна быть обновлена ​​перед заданием копирования, иначе ограничения не будут выполнены.Основная таблица будет отличаться от нескольких столбцов 1 таблицы.Это отличное будет в представлении о старой базе данных.

  • В основную базу данных могут быть добавлены только новые строки

У кого-нибудь естьидеи, некоторые рекомендации?

Визуализируйте базу данных:

Эти свободные таблицы являются подробностями о компании.1 таблица имеет адрес (а) 1 таблица имеет контактное лицо, другая таблица имеет имя пользователя и логин для нашей системы (может быть больше 1 для 1 компании), компания идентифицируется по 3ID и 1-й строке.основная таблица будет перечислять эти уникальные идентификаторы и строку, чтобы их можно было преобразовать в 1 идентификатор.этот 1 идентификатор затем используется в остальной части моей БД.Отношение один ко многим будет затем сделано из основной таблицы во все эти свободные таблицы.Я надеюсь, что это немного прояснит:)

1 Ответ

1 голос
/ 04 апреля 2011

Я думаю, что вы можете использовать EXCEPT для вставки идентификаторов, которые еще не находятся в вашей основной таблице http://msdn.microsoft.com/en-us/library/ms188055.aspx

Так, например:

insert into MainTable
    select Id1,Id2,Id3,String1,NewId from DistinctOldTable
    except
    select Id1,Id2,Id3,String1,NewId from MainTable
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...