powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / Хранимая процедура и SQL Remote
18 сообщений из 18, страница 1 из 1
Хранимая процедура и SQL Remote
    #33633030
__Yorik__
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Есть у меня база консолидированная и база удаленная. В одной из них происходит вызов хранимой процедуры, модифицирующей ряд таблиц (часть из них не входит в подписку). При репликации, согласно докам: "SQL Remote replicates procedures by replicating the actions of a procedure. The procedure call is not replicated." Ну и ессно, будет нарушение целостности.

А вот как мне передать именно вызов процедуры?
...
Рейтинг: 0 / 0
Хранимая процедура и SQL Remote
    #33633034
__Yorik__
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Забыл, ASA 7.0.3
...
Рейтинг: 0 / 0
Хранимая процедура и SQL Remote
    #33633328
antand
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Использование режима ретрансляции Вас спасет.
Читайте SQL Remote™ Руководство пользователя.
...
Рейтинг: 0 / 0
Хранимая процедура и SQL Remote
    #33633523
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
__Yorik__(часть из них не входит в подписку).
А почему часть из них не входит в подписку?
Если часть модифицируемых из ХП таблиц не реплицируется, то значит мне не нужна целостность по ним. А если мне будет нужна целостность, то я и эти таблицы включу в подписку. По моему так.
...
Рейтинг: 0 / 0
Хранимая процедура и SQL Remote
    #33634902
__Yorik__
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Сформулирую проблему более конкретно.
У меня есть два сайта, в одном из которых находится клиетнское приложение + консолидированная база, во втором - приложение и удаленная база. Приложение умеет заводить логины в БД при помощи sp_addlogin.

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

В приложении я могу сделать:
PASSTHROUGH FOR...
sp_addlogin ...
PASSTHROUGH STOP

Но PASSTHROUGH , как я понял, работает только в направлении консолидированная - удаленная.

А вот как мне передать вызов sp_addlogin с удаленной на консолидированную?

З.Ы.
В принципе еще можно завести таблицу, приделать к ней триггер, содержащий внутри себя вызов sp_addlogin и делать на удаленной базе INSERT\UPDATE, тогда SQL Remote вызовет на консолидированной базе триггер. Но как-то это извратно
...
Рейтинг: 0 / 0
Хранимая процедура и SQL Remote
    #33634953
Dim2000
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
__Yorik__ wrote:

> Приложение умеет заводить логины в БД при помощи sp_addlogin.

Тяжкое Мелкософтное наследие?

> Но PASSTHROUGH , как я понял, работает только в направлении
> консолидированная - удаленная.

Угумс. Но репликация - вещь симметричная ;))).
Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
Хранимая процедура и SQL Remote
    #33635005
__Yorik__
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dim2000
__Yorik__ wrote:

> Приложение умеет заводить логины в БД при помощи sp_addlogin.

Тяжкое Мелкософтное наследие?


это долгая и грустная история :)) Билли тут ни при чем :))

Dim2000
> Но PASSTHROUGH , как я понял, работает только в направлении
> консолидированная - удаленная.

Угумс. Но репликация - вещь симметричная ;))).

...аЦЦкая конструкция получается:))
...
Рейтинг: 0 / 0
Хранимая процедура и SQL Remote
    #33635093
antand
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Я вообще-то не пробовал, но может пойти в направлении включения в публикации системных таблиц.
SYSUSERPERM и т.д. отвечающих за пользователей.
Хотя как-то криминально выглядит, да и ненадежно.

Еще раз говорю, не пробовал.
...
Рейтинг: 0 / 0
Хранимая процедура и SQL Remote
    #33635147
antand
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
antandЯ вообще-то не пробовал, но может пойти в направлении включения в публикации системных таблиц.
SYSUSERPERM и т.д. отвечающих за пользователей.
Хотя как-то криминально выглядит, да и ненадежно.

Еще раз говорю, не пробовал.
Не... . Сильно извиняюсь. Что-то не то сморозил. Точно так нельзя. Причины я думаю понятны.

А вот то, что режим ретрансляции работает, сверху-вниз, от консолидированной в удаленную, по-моему очень даже правильно, если посмотреть зачем обычно его используют.
Так что лучше делать добавление пользователя в консолидированной базе, в удаленные ретранслируйте.
...
Рейтинг: 0 / 0
Хранимая процедура и SQL Remote
    #33635365
PaulJB
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 __Yorik__
Не наступите на грабли типа :

В одной удаленной базе вводят юзера под именем Маша и в другой тоже вводят такое же имя. У них ( в удаленных ) все гуд, а вот в консолидированной будеть конфликт при синхронизации. Зарегистрируется только логин, который пришел первым.
Эта беда может случиться так-же, если ввести в консолидированную логин Маша, затем в удаленную ввести логин с таким же именем и запустить репликацию.
...
Рейтинг: 0 / 0
Хранимая процедура и SQL Remote
    #33635450
antand
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
PaulJB 2 __Yorik__
Не наступите на грабли типа :

В одной удаленной базе вводят юзера под именем Маша и в другой тоже вводят такое же имя. У них ( в удаленных ) все гуд, а вот в консолидированной будеть конфликт при синхронизации. Зарегистрируется только логин, который пришел первым.
Эта беда может случиться так-же, если ввести в консолидированную логин Маша, затем в удаленную ввести логин с таким же именем и запустить репликацию.
Это, если имя пользователя - первичный ключ по таблице(причем своей таблицы пользователей, не системной таблицы пользователей базы) и меры по уникальности ключей в разных точках не приняты.
Но человек вроде этим вариантом не интерисуется, ему как раз нужно синхонизировать через sp_addlogin
...
Рейтинг: 0 / 0
Хранимая процедура и SQL Remote
    #33636093
PaulJB
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Позвольте с Вами не согласиться ...

Если я правильно понял, то в удаленной базе (УБ) с помощью системной процедуры sp_addlogin создается юзер (например Петя).
Затем запускаем месседж-агента и отправляем комманду на создание этого юзера в консолидированную базу (КБ). Когда в КБ эта реплика приймется, то вызовется та же процедура sp_addlogin и добавит этого юзера с такими же аттрибутами как и в УБ.

А теперь представим ситуацию:
1. В УБ добавляют юзера Петя с паролем 111
2. В это время в КБ тоже добавляют юзера Петя с паролем 222 (это совсем другой чел.)
3. УБ репликой отсылает комманду на создание своего Пети, а там Петя уже есть - местный. КБ эту комманду отобьет т.к. Петя уже есть.
Имена юзеров в базе должны быть уникальны. Системная проедура sp_addlogin не сработает. Вот вам и конфликт.

Конечно, если в КБ надо только регистрировать юзеров в какой-то своей таблице (не системной), то все гораздо проще.
...
Рейтинг: 0 / 0
Хранимая процедура и SQL Remote
    #33636253
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PaulJBУБ репликой отсылает комманду на создание своего Пети, а там Петя уже есть - местный. КБ эту комманду отобьет т.к. Петя уже есть. Не отобьет. Перезапишет.
С точки зрения базы, повторное добавление юзера - это команда на смену его пароля. То есть если два сайта вместе добавляли юзеров и сделали им одинаковое имя - останется только сделаный последним.

Я эту задачу решал по другому.
У меня, кроме основных баз (консолидирования с кучей удаленых) в которых хранятся реальные данные, есть еще и вторичная база.
Вторичная база обслуживает внутренний веб-сайт. Когда кто-либо из главного офиса или из филиала желает завести глобального юзера - идет на этот веб сайт и там заводит. Юзер во вторичной базе хранится как обычные данные. После нажатия на веб-сайте кнопки "Активизировать юзера" запускается внешний скрипт отсылающий данные по юзеру в консолидированную. А оттуда уже юзер однонаправленно расползается по филиалам.
В базах естественно есть табличка с правами глобальных юзеров и на ней триггер который при нужде делает "grant connect to...."
Работает очень даже замечательно :)
...
Рейтинг: 0 / 0
Хранимая процедура и SQL Remote
    #33636993
antand
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Согласен с White Owl.

Если мы здесь говорим об пользователях базы, именно базы, для которых используется sp_addlogin(а не какой-то своей таблицы пользователей).
Я исхожу из принципа, что
Вызов sp_addlogin можно послать только из консолидированной в удаленную базу.
Из удаленной нельзя!
При таком подходе конфликтов не должно быть.
Все правильно, если такой уже будет в удаленной, то должна перезаписать.
...
Рейтинг: 0 / 0
Хранимая процедура и SQL Remote
    #33637045
antand
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
White Owl
Я эту задачу решал по другому.
У меня, кроме основных баз (консолидирования с кучей удаленых) в которых хранятся реальные данные, есть еще и вторичная база.
Вторичная база обслуживает внутренний веб-сайт. Когда кто-либо из главного офиса или из филиала желает завести глобального юзера - идет на этот веб сайт и там заводит. Юзер во вторичной базе хранится как обычные данные. После нажатия на веб-сайте кнопки "Активизировать юзера" запускается внешний скрипт отсылающий данные по юзеру в консолидированную. А оттуда уже юзер однонаправленно расползается по филиалам.
В базах естественно есть табличка с правами глобальных юзеров и на ней триггер который при нужде делает "grant connect to...."
Работает очень даже замечательно :)

Только я бы этот сайт сделал прямо на консолидированной.
А то как-то незаконченно получается. Ведь если удалить пользователя в консолидированной(мало ли какие причины), то в вашей базе отдельной базе сайта он не изменится.
Или есть связь в обратном направлении?
Или предполагается, что управление пользователями только через сайт?
...
Рейтинг: 0 / 0
Хранимая процедура и SQL Remote
    #33637361
__Yorik__
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
В общем вопрос частично решен организационно: юзеров пока что заводить только в консолидированной, в режиме passtrough. На удаленном сайте соответствующие кнопочки засерены)

А пока двигаюсь в направлении триггера с grant connect,
Кстати, sp_addlogin из триггера, как оказалось, вызывать нельзя :(
...
Рейтинг: 0 / 0
Хранимая процедура и SQL Remote
    #33638506
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
antandИли предполагается, что управление пользователями только через сайт?Глобальными пользователями только через сайт.

Там у меня вообще все списки держаться которые являются общими для всех филиалов разом. Словари, контрагенты, и тд и тп.
Любой филиал может начать работать с новым контрагентом или начать рекламу на новой радиостанции. Клерк из филиала идет на сайт, помещает там запрос на добавление. Центральный офис проверяет данные, исправляет при необходимости потом дает добро и данные уходят в консолидированую базу и потом по филиалам.

Сначала делали просто - новый контрагент регистрировался в филиале и через репликацию попадал во все базы, но несколько раз пришлось вычищать дублирующихся контрагентов. В итоге решили сделать такой веб-сайт, как буфер для новых записей в словари.
...
Рейтинг: 0 / 0
Хранимая процедура и SQL Remote
    #33638548
antand
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
White Owl antandИли предполагается, что управление пользователями только через сайт?Глобальными пользователями только через сайт.

Там у меня вообще все списки держаться которые являются общими для всех филиалов разом. Словари, контрагенты, и тд и тп.
Любой филиал может начать работать с новым контрагентом или начать рекламу на новой радиостанции. Клерк из филиала идет на сайт, помещает там запрос на добавление. Центральный офис проверяет данные, исправляет при необходимости потом дает добро и данные уходят в консолидированую базу и потом по филиалам.

Сначала делали просто - новый контрагент регистрировался в филиале и через репликацию попадал во все базы, но несколько раз пришлось вычищать дублирующихся контрагентов. В итоге решили сделать такой веб-сайт, как буфер для новых записей в словари.

Понял. Жестко сделано.
Такие проблема с общими справочниками всегда есть при репликациях.
Вот недавно набрел на идею с мапингом таких записей в базе.
Т.е. в базе создается таблица где 2 поля, код контрагента и код реального контрагента.
С таблицей контрагентов работаем только через View, который работает с реальной таблицей через эту.
Если видим двух контрагентов, то просто добавляем туда запись.
С этого момента ненужный контрагент как бы скрывается.
Преимущества в том что, чистить вообще не надо, ну разве что по большим админовским праздникам.
До конца еще не прорабатывал в своей системе, но попробовать надо.
...
Рейтинг: 0 / 0
18 сообщений из 18, страница 1 из 1
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / Хранимая процедура и SQL Remote
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]