У меня есть приложение WinForm (C#) и поддерживается как SQL Server 2008, работающее в автономном режиме в месте расположения клиента. В настоящее время все филиалы управляются из одного места, поэтому значение столбца идентификатора всегда уникально для разных ветвей.Создание уникального значения столбца идентификатора в разных экземплярах SQL Server
Теперь я хочу, чтобы это приложение управлялось из нескольких мест и должно работать как в автономном режиме, так и в режиме онлайн. Чтобы сделать возможным, мы помещаем SQL Server в PUBLIC IP, и каждая ветка будет иметь отдельный локальный экземпляр SQL Server. Данные будут синхронизироваться между локальным и центральным терминалами через регулярные интервалы.
Этот подход подходит для синхронизации данных или есть что-то лучшее, что я могу сделать?
Если я пойду с подходом выше, проблема, с которой я столкнусь, заключается в синхронизации данных. Существует проблема с структурой таблицы, например. У меня есть таблица КУРСЫ следующим образом:
COURSES (COURSE_ID (identity column), COURSE_NAME, COURSE_BRANCH_ID)
где
COURSE_ID
является столбцом идентификаторовCOURSE_NAME
представляет имя стандартаCOURSE_BRANCH_ID
представляет ветвь, где берется курс.
Теперь каждый SQL Server генерирует собственное значение для столбца COURSE_ID
и может быть одинаковым для разных серверов.
- Уникальная комбинация
COURSE_ID
иCOURSE_BRANCH_ID
. - Есть ли способ добавить
COURSE_BRANCH_ID
сCOURSE_ID
без добавления нового столбца IDENTITY?
подхода я думал
- Remove идентичности из
COURSE_ID
колонны, - Добавить новый столбец говорить ID, который будет представлять собой столбец идентификаторов.
- Теперь после вставки на столе КУРСЫ написать триггер, который будет обновлять значение
COURSE_ID
вConcate(COURSE_BRANCH_ID,ID)
convert(number(convert(varchar,COURSE_BRANCH_ID) + convert(varchar,ID))
Но это потребует много усилий, как у меня есть около 19 столов с такой проблемой. Я там что-нибудь лучше, чем это мы можем сделать? Любые предложения приветствуются! Спасибо!