basitsar Ответов: 1

Синхронизация данных между более чем двумя SQL server


Привет,

У меня есть несколько SQL - серверов с одной и той же схемой/структурой данных. Один основной сервер, который работает онлайн 24x7. другие серверы локально установлены на каждом клиенте.

как получить сервер будет синхронизироваться с основным сервером.

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

сервер будет передавать основные данные клиенту, а клиент будет отправлять данные транзакции на сервер с помощью первичного ключа таблицы и номера местоположения с помощью xml-импорта/экспорта данных вручную.


Но как синхронизировать клиентов с сервером, когда подключение к интернету доступно на клиентской машине?

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

пожалуйста, помогите мне в этом.

Спасибо
Басит.

Что я уже пробовал:

сервер будет передавать основные данные клиенту, а клиент будет отправлять данные транзакции на сервер с помощью первичного ключа таблицы и номера местоположения с помощью xml-импорта/экспорта данных вручную.

1 Ответов

Рейтинг:
0

Wendelius

Не уверен, правильно ли я понимаю этот вопрос, но если вы собираетесь вставлять данные в несколько отдельных мест, у вас в основном есть два варианта, касающихся первичного ключа:


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


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

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

  • Используйте ключ с двумя столбцами. Один столбец для уникальной идентификации записи внутри сервера, другой столбец для определения сервера, на котором произошла вставка. Это будет извлечено из конфигурации при вставке
  • Используйте GUID для первичного ключа. Он уникален для всех серверов по своей природе
  • Если ваш текущий ключ является идентификатором, и вы хотите придерживаться его (что, я думаю, является худшим вариантом), используйте возможность определить диапазон для идентификационного ключа. Однако вам нужно примерно знать, сколько записей будет вставлено в каждый сервер, чтобы иметь возможность определить диапазон, который не перекрывается..

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

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

И конечно, INSERT-это не единственная операция, которая изменяет данные, у вас также есть UPDATE и DELETE :)