Страница 1 из 1
Как пустить 'чужого' пользователя в свою БД?
Добавлено: 04 июн 2010, 15:27
Александр
понимаю что вопрос не пятничный, но а вдруг
короче ситуация такая
есть БД Лоции для филиала номер 0, со всеми своими юзерами
есть реплицированный в эту БД пользователь из филиала номер 10
(честного говоря не помню реплицированный он или нет, может здесь и созданный но для другого филиала (10))
вопрос
можно ли войти в БД филиала 0 под юзером филиала 10 - чтобы Лоция поняла что это
чужой, на предмет того что все объекты будут создаваться с номерами филиала 10 - для дальнейшей репликации в отдельную БД этого другого филиала 10
как то так...
лучше сформулировать не могу пока
зы
все это для отладки территориально распределенного режима чтобы два филиала отработали процедуры в одной базе а потом разошлись по своим серверам
Re: Как пустить 'чужого' пользователя в свою БД?
Добавлено: 04 июн 2010, 16:10
Loco
Если я ничего не путаю, то создаваемые объекты получают код филиала от id базы, а не от пользователя. Но это по памяти.
Re: Как пустить 'чужого' пользователя в свою БД?
Добавлено: 06 июн 2010, 17:27
Александр
id идут судя по всему от id филиала из общих параметров БД
вот только Лоция начинает учитывать этот id после перезапуска сеанса - если бы можно было на лету или переключать филиал или как то его учитывать или указывать явно - типа эмуляция разных филиалов в одном филиале в одном сеансе в одном клиенте в зависимости от принадлежности юзера филиалу
т.е. есть БД 'test'
в общих настройках говорим что это филиал id=0, создаем юзеров и объекты
в следующем сеансе этой базы говорим что это филиал id=10, создаем юзеров и объекты
теперь в базе есть и свои и 'чужие'
устанавливаем снова филиал id=0 и заходим в базу под юзером созданным когда филиал был id=10, но при создании им объектов они.... будут создаваться от филиала id=0
вот если бы Лоцию как то переключать самому - типа если зашел юзер из филиала id=0, она сама подставляла в своих настройках филиал id=0
а если зашел юзер из филиала id=10 - переключилась бы на филиал id=10...
Re: Как пустить 'чужого' пользователя в свою БД?
Добавлено: 07 июн 2010, 12:12
Старик Крупский
А если зашли два юзера, один из филиала 0, а другой из филиала 10?
Re: Как пустить 'чужого' пользователя в свою БД?
Добавлено: 07 июн 2010, 12:43
Александр
в одну базу да - нет проблем, поскольку в одной базе не важно с каким именно id филиала - может быть много информации реплицированной из разных филиалов - т.е. пересечений по id никогда не будет, как по объектам так и по юзерам.
сейчас проблема только в том что не совсем понятна принадлежность id филиала к отдельно взятой БД, нужна она в принципе или нет на этапе перед стартом клиента....
наверно было-бы гораздо логичней при настройке
- завести пользователей от филиалов в разные БД
- реплицировать всех контактных (имеющих право работать во всех филиалах) пользователей по всем БД всех филиалов
- а при старте отдельно взятого клиента в отдельно взятую БД - анализировать кто входит и генерить id объектов и служебной информации уже от юзера (от филиала в котором он был создан) а не от общей настройки конкретной БД.
Причем на то как организовано сегодня это никак не повлияет - просто система будет гибче
Вот интересно можно это реализовать своими силами или нет?
а главное что- то что при таком подходе можно всем поработать в одной базе а потом разбежаться без потери физической идентификации/принадлежности объектов конкретному филиалу

забрав с собой 'свои' объекты
Re: Как пустить 'чужого' пользователя в свою БД?
Добавлено: 07 июн 2010, 18:39
Старик Крупский
Фантазия, прям как у Жюль Верна

Этот подход имеет право на жизнь, при условии ИЗНАЧАЛЬНОЙ ориентации программы на работу в одном филиале БД. А если в программе есть репликация, то для поддержания целостности разработчик будет вынужден вводить механизм различия своих ИД и чужих и при этом гарантировать, что они не пересекутся для разных номеров филиалов БД. Сложить первый и второй подход, как ты предлагаешь, вряд ли получится.
Re: Как пустить 'чужого' пользователя в свою БД?
Добавлено: 08 июн 2010, 06:50
Александр
в том то и дело что все с точностью до наоборот
1. есть База Данных или Базы Данных и сервер, которые живут вместе и как бы не знают ничего о Лоции и у них все хорошо
2. есть Лоция которая все время норовит что-то записать в БД, генерит свои id, обещает что все будет хорошо, и вообще делает все что хочет - ну конечно в рамках того что ей разрешает сервер
и в какой момент времени Лоция в лице своего админа решит сменить id филиала своей отдельно взятой БД никому не известно - в плане того что вдруг, например, у него 'свои' филиальские id для объектов закончатся - и это будет выходом из положения
на самом деле - я больше чем уверен что все обстоит именно так - База Данных или Базы Данных и генератор id Лоция, а при таком подходе жестко фиксировать (вводить вручную) первые 5 знаков id (id филиала) при старте клиента - не имеет особого смысла, на мой взгляд, а вот оперативная смена этих первых 5ти знаков генератора id - выглядит вполне логично

причем даже не оперативная - а просто замена фиксированного номера филиала при старте на идентификацию филиала по пользователю которых запрашивает подключение - только и всего
вопрос лишь в том как это сделать самому?
Re: Как пустить 'чужого' пользователя в свою БД?
Добавлено: 08 июн 2010, 19:57
Старик Крупский
Чёт не понял, так ты опять стремаешься, что у тебя ID-ры кончатся в самый неподходящий момент? Ну слушай, мы же не вечные, а ID-ров на наш век по-моему, хватит за глаза

Re: Как пустить 'чужого' пользователя в свою БД?
Добавлено: 09 июн 2010, 06:40
Александр