Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 2 базы + "общая" табличка. Синхронизация при insert/update/delete  [new]
HideFolder
Member

Откуда:
Сообщений: 8
Есть 2 базы, которые ведут один и тот же справочник (в каждой базе своя табличка но они должны уметь дружить). Мне нужно сделать так, чтобы создаваемые записи автоматически копировались из одной в другую с сохранением ID.

То есть создал запись в одной БД, она скопировалась в другую БД, во второй БД создали вторую запись и она скопировалась в первую БД.

Из решений вижу только повесить по тригеру на каждую из них и синхронизировать создание/изменение/удаление (set identity_insert ON/OFF). Но мне оно не нравится по причине, что конечному пользователю придется давать права на identity_insert и выглядит все это очень ненадежно.
4 апр 19, 18:09    [21853092]     Ответить | Цитировать Сообщить модератору
 Re: 2 базы + "общая" табличка. Синхронизация при insert/update/delete  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 36694
А зачем конечному пользователю придется давать права на identity_insert?
4 апр 19, 18:14    [21853094]     Ответить | Цитировать Сообщить модератору
 Re: 2 базы + "общая" табличка. Синхронизация при insert/update/delete  [new]
buser
Member

Откуда: Санкт-Петербург
Сообщений: 4535
HideFolder, это не единственная ваша проблема... если иди у вас еще и уникальный, то будет больно...
4 апр 19, 18:15    [21853095]     Ответить | Цитировать Сообщить модератору
 Re: 2 базы + "общая" табличка. Синхронизация при insert/update/delete  [new]
HideFolder
Member

Откуда:
Сообщений: 8
Гавриленко Сергей Алексеевич
А зачем конечному пользователю придется давать права на identity_insert?

По причине что PK уникален и должен быть одинаков для записи в обеих базах. Они сами набивают данные через программу. Все должно работать в рилтайм (Создал запись - она сразу же появилась в своей БД и на другой). Сохранение ID очень важно
4 апр 19, 18:20    [21853099]     Ответить | Цитировать Сообщить модератору
 Re: 2 базы + "общая" табличка. Синхронизация при insert/update/delete  [new]
komrad
Member

Откуда: Msk -> Utrecht
Сообщений: 5162
HideFolder
Гавриленко Сергей Алексеевич
А зачем конечному пользователю придется давать права на identity_insert?

По причине что PK уникален и должен быть одинаков для записи в обеих базах. Они сами набивают данные через программу. Все должно работать в рилтайм (Создал запись - она сразу же появилась в своей БД и на другой). Сохранение ID очень важно


ну накиньте к счетчику в одной из баз 10-100 млн (или сколько там у вас записей не ожидается) и не будут диапазоны пересекаться
а в приложении уже делайте "поправку на ветер"
4 апр 19, 18:54    [21853137]     Ответить | Цитировать Сообщить модератору
 Re: 2 базы + "общая" табличка. Синхронизация при insert/update/delete  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 30782
HideFolder
Из решений вижу только повесить по тригеру на каждую из них и синхронизировать создание/изменение/удаление (set identity_insert ON/OFF).
Первый вариант - сделать merge репликацию
Второй вариант - сделать табличку без identity, вместо этого использовать сиквенс, и вставлять данные в другую базу либо триггером, либо из приложения.
ИД между этими двумя базами разделить диапазонами.
4 апр 19, 21:08    [21853255]     Ответить | Цитировать Сообщить модератору
 Re: 2 базы + "общая" табличка. Синхронизация при insert/update/delete  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 36694
HideFolder
Гавриленко Сергей Алексеевич
А зачем конечному пользователю придется давать права на identity_insert?

По причине что PK уникален и должен быть одинаков для записи в обеих базах. Они сами набивают данные через программу. Все должно работать в рилтайм (Создал запись - она сразу же появилась в своей БД и на другой). Сохранение ID очень важно
Как ваш пассаж связан с выдачей прав?
5 апр 19, 00:21    [21853368]     Ответить | Цитировать Сообщить модератору
 Re: 2 базы + "общая" табличка. Синхронизация при insert/update/delete  [new]
StarikNavy
Member

Откуда: Москва
Сообщений: 2375
а еще можно добавить колоночку "Id базы" и соответственно уникальный ключ по двум этим колонкам
5 апр 19, 11:07    [21853705]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить