Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Хранимая процедура и SQL Remote
|
|||
|---|---|---|---|
|
#18+
Есть у меня база консолидированная и база удаленная. В одной из них происходит вызов хранимой процедуры, модифицирующей ряд таблиц (часть из них не входит в подписку). При репликации, согласно докам: "SQL Remote replicates procedures by replicating the actions of a procedure. The procedure call is not replicated." Ну и ессно, будет нарушение целостности. А вот как мне передать именно вызов процедуры? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.03.2006, 16:32 |
|
||
|
Хранимая процедура и SQL Remote
|
|||
|---|---|---|---|
|
#18+
Забыл, ASA 7.0.3 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.03.2006, 16:32 |
|
||
|
Хранимая процедура и SQL Remote
|
|||
|---|---|---|---|
|
#18+
Использование режима ретрансляции Вас спасет. Читайте SQL Remote Руководство пользователя. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.03.2006, 17:48 |
|
||
|
Хранимая процедура и SQL Remote
|
|||
|---|---|---|---|
|
#18+
__Yorik__(часть из них не входит в подписку). А почему часть из них не входит в подписку? Если часть модифицируемых из ХП таблиц не реплицируется, то значит мне не нужна целостность по ним. А если мне будет нужна целостность, то я и эти таблицы включу в подписку. По моему так. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.03.2006, 19:10 |
|
||
|
Хранимая процедура и SQL Remote
|
|||
|---|---|---|---|
|
#18+
Сформулирую проблему более конкретно. У меня есть два сайта, в одном из которых находится клиетнское приложение + консолидированная база, во втором - приложение и удаленная база. Приложение умеет заводить логины в БД при помощи sp_addlogin. Мне надо чтобы наборы логинов в базах были синхронизированы. Иными словами, при заведении логина в консолидированной базе, он должен появляться в удаленной и наоборот. В приложении я могу сделать: PASSTHROUGH FOR... sp_addlogin ... PASSTHROUGH STOP Но PASSTHROUGH , как я понял, работает только в направлении консолидированная - удаленная. А вот как мне передать вызов sp_addlogin с удаленной на консолидированную? З.Ы. В принципе еще можно завести таблицу, приделать к ней триггер, содержащий внутри себя вызов sp_addlogin и делать на удаленной базе INSERT\UPDATE, тогда SQL Remote вызовет на консолидированной базе триггер. Но как-то это извратно ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.03.2006, 13:15 |
|
||
|
Хранимая процедура и SQL Remote
|
|||
|---|---|---|---|
|
#18+
__Yorik__ wrote: > Приложение умеет заводить логины в БД при помощи sp_addlogin. Тяжкое Мелкософтное наследие? > Но PASSTHROUGH , как я понял, работает только в направлении > консолидированная - удаленная. Угумс. Но репликация - вещь симметричная ;))). Posted via ActualForum NNTP Server 1.3 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.03.2006, 13:26 |
|
||
|
Хранимая процедура и SQL Remote
|
|||
|---|---|---|---|
|
#18+
Dim2000 __Yorik__ wrote: > Приложение умеет заводить логины в БД при помощи sp_addlogin. Тяжкое Мелкософтное наследие? это долгая и грустная история :)) Билли тут ни при чем :)) Dim2000 > Но PASSTHROUGH , как я понял, работает только в направлении > консолидированная - удаленная. Угумс. Но репликация - вещь симметричная ;))). ...аЦЦкая конструкция получается:)) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.03.2006, 13:39 |
|
||
|
Хранимая процедура и SQL Remote
|
|||
|---|---|---|---|
|
#18+
Я вообще-то не пробовал, но может пойти в направлении включения в публикации системных таблиц. SYSUSERPERM и т.д. отвечающих за пользователей. Хотя как-то криминально выглядит, да и ненадежно. Еще раз говорю, не пробовал. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.03.2006, 14:00 |
|
||
|
Хранимая процедура и SQL Remote
|
|||
|---|---|---|---|
|
#18+
antandЯ вообще-то не пробовал, но может пойти в направлении включения в публикации системных таблиц. SYSUSERPERM и т.д. отвечающих за пользователей. Хотя как-то криминально выглядит, да и ненадежно. Еще раз говорю, не пробовал. Не... . Сильно извиняюсь. Что-то не то сморозил. Точно так нельзя. Причины я думаю понятны. А вот то, что режим ретрансляции работает, сверху-вниз, от консолидированной в удаленную, по-моему очень даже правильно, если посмотреть зачем обычно его используют. Так что лучше делать добавление пользователя в консолидированной базе, в удаленные ретранслируйте. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.03.2006, 14:11 |
|
||
|
Хранимая процедура и SQL Remote
|
|||
|---|---|---|---|
|
#18+
2 __Yorik__ Не наступите на грабли типа : В одной удаленной базе вводят юзера под именем Маша и в другой тоже вводят такое же имя. У них ( в удаленных ) все гуд, а вот в консолидированной будеть конфликт при синхронизации. Зарегистрируется только логин, который пришел первым. Эта беда может случиться так-же, если ввести в консолидированную логин Маша, затем в удаленную ввести логин с таким же именем и запустить репликацию. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.03.2006, 15:07 |
|
||
|
Хранимая процедура и SQL Remote
|
|||
|---|---|---|---|
|
#18+
PaulJB 2 __Yorik__ Не наступите на грабли типа : В одной удаленной базе вводят юзера под именем Маша и в другой тоже вводят такое же имя. У них ( в удаленных ) все гуд, а вот в консолидированной будеть конфликт при синхронизации. Зарегистрируется только логин, который пришел первым. Эта беда может случиться так-же, если ввести в консолидированную логин Маша, затем в удаленную ввести логин с таким же именем и запустить репликацию. Это, если имя пользователя - первичный ключ по таблице(причем своей таблицы пользователей, не системной таблицы пользователей базы) и меры по уникальности ключей в разных точках не приняты. Но человек вроде этим вариантом не интерисуется, ему как раз нужно синхонизировать через sp_addlogin ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.03.2006, 15:30 |
|
||
|
Хранимая процедура и SQL Remote
|
|||
|---|---|---|---|
|
#18+
Позвольте с Вами не согласиться ... Если я правильно понял, то в удаленной базе (УБ) с помощью системной процедуры sp_addlogin создается юзер (например Петя). Затем запускаем месседж-агента и отправляем комманду на создание этого юзера в консолидированную базу (КБ). Когда в КБ эта реплика приймется, то вызовется та же процедура sp_addlogin и добавит этого юзера с такими же аттрибутами как и в УБ. А теперь представим ситуацию: 1. В УБ добавляют юзера Петя с паролем 111 2. В это время в КБ тоже добавляют юзера Петя с паролем 222 (это совсем другой чел.) 3. УБ репликой отсылает комманду на создание своего Пети, а там Петя уже есть - местный. КБ эту комманду отобьет т.к. Петя уже есть. Имена юзеров в базе должны быть уникальны. Системная проедура sp_addlogin не сработает. Вот вам и конфликт. Конечно, если в КБ надо только регистрировать юзеров в какой-то своей таблице (не системной), то все гораздо проще. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.03.2006, 18:45 |
|
||
|
Хранимая процедура и SQL Remote
|
|||
|---|---|---|---|
|
#18+
PaulJBУБ репликой отсылает комманду на создание своего Пети, а там Петя уже есть - местный. КБ эту комманду отобьет т.к. Петя уже есть. Не отобьет. Перезапишет. С точки зрения базы, повторное добавление юзера - это команда на смену его пароля. То есть если два сайта вместе добавляли юзеров и сделали им одинаковое имя - останется только сделаный последним. Я эту задачу решал по другому. У меня, кроме основных баз (консолидирования с кучей удаленых) в которых хранятся реальные данные, есть еще и вторичная база. Вторичная база обслуживает внутренний веб-сайт. Когда кто-либо из главного офиса или из филиала желает завести глобального юзера - идет на этот веб сайт и там заводит. Юзер во вторичной базе хранится как обычные данные. После нажатия на веб-сайте кнопки "Активизировать юзера" запускается внешний скрипт отсылающий данные по юзеру в консолидированную. А оттуда уже юзер однонаправленно расползается по филиалам. В базах естественно есть табличка с правами глобальных юзеров и на ней триггер который при нужде делает "grant connect to...." Работает очень даже замечательно :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.03.2006, 20:02 |
|
||
|
Хранимая процедура и SQL Remote
|
|||
|---|---|---|---|
|
#18+
Согласен с White Owl. Если мы здесь говорим об пользователях базы, именно базы, для которых используется sp_addlogin(а не какой-то своей таблицы пользователей). Я исхожу из принципа, что Вызов sp_addlogin можно послать только из консолидированной в удаленную базу. Из удаленной нельзя! При таком подходе конфликтов не должно быть. Все правильно, если такой уже будет в удаленной, то должна перезаписать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.03.2006, 11:01 |
|
||
|
Хранимая процедура и SQL Remote
|
|||
|---|---|---|---|
|
#18+
White Owl Я эту задачу решал по другому. У меня, кроме основных баз (консолидирования с кучей удаленых) в которых хранятся реальные данные, есть еще и вторичная база. Вторичная база обслуживает внутренний веб-сайт. Когда кто-либо из главного офиса или из филиала желает завести глобального юзера - идет на этот веб сайт и там заводит. Юзер во вторичной базе хранится как обычные данные. После нажатия на веб-сайте кнопки "Активизировать юзера" запускается внешний скрипт отсылающий данные по юзеру в консолидированную. А оттуда уже юзер однонаправленно расползается по филиалам. В базах естественно есть табличка с правами глобальных юзеров и на ней триггер который при нужде делает "grant connect to...." Работает очень даже замечательно :) Только я бы этот сайт сделал прямо на консолидированной. А то как-то незаконченно получается. Ведь если удалить пользователя в консолидированной(мало ли какие причины), то в вашей базе отдельной базе сайта он не изменится. Или есть связь в обратном направлении? Или предполагается, что управление пользователями только через сайт? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.03.2006, 11:16 |
|
||
|
Хранимая процедура и SQL Remote
|
|||
|---|---|---|---|
|
#18+
В общем вопрос частично решен организационно: юзеров пока что заводить только в консолидированной, в режиме passtrough. На удаленном сайте соответствующие кнопочки засерены) А пока двигаюсь в направлении триггера с grant connect, Кстати, sp_addlogin из триггера, как оказалось, вызывать нельзя :( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.03.2006, 12:37 |
|
||
|
Хранимая процедура и SQL Remote
|
|||
|---|---|---|---|
|
#18+
antandИли предполагается, что управление пользователями только через сайт?Глобальными пользователями только через сайт. Там у меня вообще все списки держаться которые являются общими для всех филиалов разом. Словари, контрагенты, и тд и тп. Любой филиал может начать работать с новым контрагентом или начать рекламу на новой радиостанции. Клерк из филиала идет на сайт, помещает там запрос на добавление. Центральный офис проверяет данные, исправляет при необходимости потом дает добро и данные уходят в консолидированую базу и потом по филиалам. Сначала делали просто - новый контрагент регистрировался в филиале и через репликацию попадал во все базы, но несколько раз пришлось вычищать дублирующихся контрагентов. В итоге решили сделать такой веб-сайт, как буфер для новых записей в словари. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.03.2006, 18:49 |
|
||
|
Хранимая процедура и SQL Remote
|
|||
|---|---|---|---|
|
#18+
White Owl antandИли предполагается, что управление пользователями только через сайт?Глобальными пользователями только через сайт. Там у меня вообще все списки держаться которые являются общими для всех филиалов разом. Словари, контрагенты, и тд и тп. Любой филиал может начать работать с новым контрагентом или начать рекламу на новой радиостанции. Клерк из филиала идет на сайт, помещает там запрос на добавление. Центральный офис проверяет данные, исправляет при необходимости потом дает добро и данные уходят в консолидированую базу и потом по филиалам. Сначала делали просто - новый контрагент регистрировался в филиале и через репликацию попадал во все базы, но несколько раз пришлось вычищать дублирующихся контрагентов. В итоге решили сделать такой веб-сайт, как буфер для новых записей в словари. Понял. Жестко сделано. Такие проблема с общими справочниками всегда есть при репликациях. Вот недавно набрел на идею с мапингом таких записей в базе. Т.е. в базе создается таблица где 2 поля, код контрагента и код реального контрагента. С таблицей контрагентов работаем только через View, который работает с реальной таблицей через эту. Если видим двух контрагентов, то просто добавляем туда запись. С этого момента ненужный контрагент как бы скрывается. Преимущества в том что, чистить вообще не надо, ну разве что по большим админовским праздникам. До конца еще не прорабатывал в своей системе, но попробовать надо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.03.2006, 19:14 |
|
||
|
|

start [/forum/topic.php?fid=55&msg=33633328&tid=2012943]: |
0ms |
get settings: |
8ms |
get forum list: |
17ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
48ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
73ms |
get tp. blocked users: |
1ms |
| others: | 209ms |
| total: | 376ms |

| 0 / 0 |
