Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 данные должны быть одинаковыми в 2-х таблицах в разных БД  [new]
Nemoxur
Member

Откуда:
Сообщений: 179
Добрый день, уважаемые коллеги!
Подскажите, пожалуйста, каким инструментом лучше всего реализовать актуальность данных в двух таблицах в разных БД.

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

С помощью каких инструментов это лучше всего реализовать?
18 апр 16, 12:37    [19071384]     Ответить | Цитировать Сообщить модератору
 Re: данные должны быть одинаковыми в 2-х таблицах в разных БД  [new]
a_voronin
Member

Откуда: Москва
Сообщений: 4804
Nemoxur,

Репликация. В частности при таком двунаправленном потоке MERGE репликация.
18 апр 16, 12:39    [19071394]     Ответить | Цитировать Сообщить модератору
 Re: данные должны быть одинаковыми в 2-х таблицах в разных БД  [new]
Nemoxur
Member

Откуда:
Сообщений: 179
a_voronin,

Даже если БД на одном экземпляре стоят?
18 апр 16, 12:59    [19071498]     Ответить | Цитировать Сообщить модератору
 Re: данные должны быть одинаковыми в 2-х таблицах в разных БД  [new]
Glory
Member

Откуда:
Сообщений: 104760
Nemoxur
Даже если БД на одном экземпляре стоят?

Тогда сделайте одну таблицу
18 апр 16, 13:02    [19071518]     Ответить | Цитировать Сообщить модератору
 Re: данные должны быть одинаковыми в 2-х таблицах в разных БД  [new]
Nemoxur
Member

Откуда:
Сообщений: 179
Всем спасибо за советы.
К сожалению одну таблицу сделать нельзя, буду разбираться с репликацией.
18 апр 16, 14:13    [19071949]     Ответить | Цитировать Сообщить модератору
 Re: данные должны быть одинаковыми в 2-х таблицах в разных БД  [new]
iap
Member

Откуда: Москва
Сообщений: 46999
Сделать одну таблицу, а во всех прочих базах - view
18 апр 16, 14:16    [19071975]     Ответить | Цитировать Сообщить модератору
 Re: данные должны быть одинаковыми в 2-х таблицах в разных БД  [new]
invm
Member

Откуда: Москва
Сообщений: 9397
Nemoxur
К сожалению одну таблицу сделать нельзя
Можно сделать таблицу в одной БД и одноименный синоним в другой.
Тогда запросы не придется переписывать.
18 апр 16, 14:17    [19071981]     Ответить | Цитировать Сообщить модератору
 Re: данные должны быть одинаковыми в 2-х таблицах в разных БД  [new]
Nemoxur
Member

Откуда:
Сообщений: 179
invm,

А как правильно настроить права доступа? Я в этом не селен.
У учетной записи не должно быть доступа к объектам БД №1, потому для этой учетной записи была создана БД №2 с такой же таблицей, где учетная запись может менять данные и получать обновленные записи из БД №1
В БД №1 все настроено под клиентское приложение, и работает все под ролью public
18 апр 16, 14:33    [19072068]     Ответить | Цитировать Сообщить модератору
 Re: данные должны быть одинаковыми в 2-х таблицах в разных БД  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 7868
Nemoxur,

какую цель Вы преследуете разделением данных на две базы?
18 апр 16, 14:48    [19072195]     Ответить | Цитировать Сообщить модератору
 Re: данные должны быть одинаковыми в 2-х таблицах в разных БД  [new]
Nemoxur
Member

Откуда:
Сообщений: 179
Владислав Колосов,

для обмена между 2-мя ИС
18 апр 16, 14:51    [19072218]     Ответить | Цитировать Сообщить модератору
 Re: данные должны быть одинаковыми в 2-х таблицах в разных БД  [new]
Konst_One
Member

Откуда:
Сообщений: 11537
Nemoxur,

у вас БД1 и БД2 находятся на разных SQL-серверах в пределах одной локальной сети?
18 апр 16, 15:10    [19072380]     Ответить | Цитировать Сообщить модератору
 Re: данные должны быть одинаковыми в 2-х таблицах в разных БД  [new]
iap
Member

Откуда: Москва
Сообщений: 46999
Konst_One
БД1 и БД2 находятся на разных SQL-серверах в пределах одной локальной сети?
Nemoxur
Даже если БД на одном экземпляре стоят?
18 апр 16, 15:14    [19072427]     Ответить | Цитировать Сообщить модератору
 Re: данные должны быть одинаковыми в 2-х таблицах в разных БД  [new]
invm
Member

Откуда: Москва
Сообщений: 9397
Nemoxur
А как правильно настроить права доступа? Я в этом не селен.
Создать для учетной записи пользователей в обеих БД.
В первой дать нужные разрешения на таблицу, во второй - на синоним. Лучше сделать через роли.
Nemoxur
и работает все под ролью public
В БД, где таблица придется выдавать явные deny на все другие объекты для добавленного пользователя. Опять же, лучше через роль.
18 апр 16, 15:17    [19072449]     Ответить | Цитировать Сообщить модератору
 Re: данные должны быть одинаковыми в 2-х таблицах в разных БД  [new]
Nemoxur
Member

Откуда:
Сообщений: 179
invm,

там где таблица, более тысячи различных объектов и создаются дополнительные.
По моему это администрировать более трудоёмко, чем создать репликацию, если я ошибаюсь, то поправьте меня.
Мне вариант с синонимом нравится, тогда огромный плюс данные online но вот администрирование пугает...
18 апр 16, 15:28    [19072557]     Ответить | Цитировать Сообщить модератору
 Re: данные должны быть одинаковыми в 2-х таблицах в разных БД  [new]
invm
Member

Откуда: Москва
Сообщений: 9397
Перенесите таблицу в новую схему. Сделайте на нее локальный синоним в старой схеме.
Выдайте паблику разрешения на этот синоним.

Выдайте проблемной роли или пользователю deny сразу на схему, где находятся все объекты. Тогда не придется учитывать появление новых объектов.
18 апр 16, 15:45    [19072698]     Ответить | Цитировать Сообщить модератору
 Re: данные должны быть одинаковыми в 2-х таблицах в разных БД  [new]
Nemoxur
Member

Откуда:
Сообщений: 179
invm,

Идею понял, спасибо.

Таблицу перенести не могу на новую схему, так как в ней работают пользователи и там куча функционала.
Думаю сделаю скрипт и job который будет ставить deny на все объекты, кроме тех где явно стоит разрешение.
18 апр 16, 15:58    [19072804]     Ответить | Цитировать Сообщить модератору
 Re: данные должны быть одинаковыми в 2-х таблицах в разных БД  [new]
invm
Member

Откуда: Москва
Сообщений: 9397
Nemoxur
Таблицу перенести не могу на новую схему, так как в ней работают пользователи и там куча функционала.
Мда. Как думаете, зачем я порекомендовал сделать локальный синоним для этой таблицы?
18 апр 16, 16:01    [19072824]     Ответить | Цитировать Сообщить модератору
 Re: данные должны быть одинаковыми в 2-х таблицах в разных БД  [new]
SQL2008
Member

Откуда: Москва
Сообщений: 4247
Nemoxur
Всем спасибо за советы.
К сожалению одну таблицу сделать нельзя, буду разбираться с репликацией.

Только имейте в виду, что при MERGE репликации система создаст дополнительное поле в таблицах.
Позволяет ваша структура данных это?
18 апр 16, 16:07    [19072865]     Ответить | Цитировать Сообщить модератору
 Re: данные должны быть одинаковыми в 2-х таблицах в разных БД  [new]
invm
Member

Откуда: Москва
Сообщений: 9397
Nemoxur,

В общем, нужно делать примерно так:
1.
use master;
create MySpecificLogin with password = ...

2.
use DB1;
go

create schema myschema;
go

alter schema myschema transfer dbo.MyTable;
go

create synonym dbo.MyTable for myschema.MyTable;
grant ... on dbo.MyTable to public;

create user MySpecificLogin;
create role MySpecificRole;
exec sys.sp_addrolemember 'MySpecificRole', 'MySpecificLogin';

grant ... on myschema.MyTable to MySpecificRole;
deny control on schema::dbo to MySpecificRole;

3.
create user MySpecificLogin;
create role MySpecificRole;
exec sys.sp_addrolemember 'MySpecificRole', 'MySpecificLogin';

create synonym dbo.MyTable for DB1.myschema.MyTable;
grant ... on dbo.MyTable to MySpecificRole;
18 апр 16, 16:11    [19072891]     Ответить | Цитировать Сообщить модератору
 Re: данные должны быть одинаковыми в 2-х таблицах в разных БД  [new]
Nemoxur
Member

Откуда:
Сообщений: 179
invm,

Кажется я понял:
роли public даем доступ на синоним допустим name1
Пользователи работают как и раньше с таблицей.
А проблемному пользователю закрываем схему dbo и даем доступ только к схеме name1 так?
18 апр 16, 16:12    [19072901]     Ответить | Цитировать Сообщить модератору
 Re: данные должны быть одинаковыми в 2-х таблицах в разных БД  [new]
Nemoxur
Member

Откуда:
Сообщений: 179
SQL2008,

да структура позволяет - это самописный функционал и приложение его не отслеживает.
18 апр 16, 16:14    [19072921]     Ответить | Цитировать Сообщить модератору
 Re: данные должны быть одинаковыми в 2-х таблицах в разных БД  [new]
invm
Member

Откуда: Москва
Сообщений: 9397
Nemoxur
А проблемному пользователю закрываем схему dbo и даем доступ только к схеме name1 так?
Да.
18 апр 16, 16:17    [19072947]     Ответить | Цитировать Сообщить модератору
 Re: данные должны быть одинаковыми в 2-х таблицах в разных БД  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 7868
Nemoxur
Владислав Колосов,

для обмена между 2-мя ИС


В таком случае репликация наилучший вариант. Завтра ИС разрастутся или появится разделение по регионам, а Вы к этому будете готовы.
18 апр 16, 16:22    [19072984]     Ответить | Цитировать Сообщить модератору
 Re: данные должны быть одинаковыми в 2-х таблицах в разных БД  [new]
Nemoxur
Member

Откуда:
Сообщений: 179
invm,

Спасибо за идею.

Идея с синонимом мне нравиться больше, чем репликация :)

Всем спасибо!
18 апр 16, 16:23    [19072987]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить