Модераторы: Akina
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Отслеживание чужих изменений и транзакций, MS-SQL 
:(
    Опции темы
DENNN
Дата 22.4.2003, 09:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 3878
Регистрация: 27.3.2002
Где: Москва

Репутация: нет
Всего: 43



Есть ли способ отследить обращения других юзверей к таблице с которой я в данный момент работаю?
Или хотя бы получить сигнал, что мои данные, выбранные SELECT'ом устарели?

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

P.S. использую OLE DB

Это сообщение отредактировал(а) DENNN - 22.4.2003, 09:37
PM ICQ   Вверх
AntonSaburov
Дата 22.4.2003, 11:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Штурман
****


Профиль
Группа: Модератор
Сообщений: 5658
Регистрация: 2.7.2002
Где: Санкт-Петербург

Репутация: нет
Всего: 118



Есть достаточно IMHO неплохой способ, но его реализация не простая и требует достаточных трудозатрат.
Кстати этот вариант еще раз кидает камешек на весы изменений только с помощью stored procedures.

Вообщем можно написать внешнюю dll, которая может быть зарегистрирована на MS SQL как обычная stored процедура. Тогда ее можно просто использовать как и встроенную. Посмотреть как писать такую dll можно в документации.
Эта процедура может рассылать например сообщения подключенным клиентам по IP (TCP или UDP). Ну а на клиентах уже можно принимать решения - обновлять, не обновлять. Ну и прочая.

Вызывать такую процедуру можно из триггера на изменение или из процедуры, которая делает такое (второй вариант мне больше нравится)

PM MAIL WWW ICQ   Вверх
DENNN
Дата 22.4.2003, 11:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 3878
Регистрация: 27.3.2002
Где: Москва

Репутация: нет
Всего: 43



Да процесс не детский. Если только готовый код откуда-нибудь скопировать и подправить. Но и после этого доработка архитектуры может потребоваться.
PM ICQ   Вверх
AntonSaburov
Дата 22.4.2003, 12:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Штурман
****


Профиль
Группа: Модератор
Сообщений: 5658
Регистрация: 2.7.2002
Где: Санкт-Петербург

Репутация: нет
Всего: 118



Есть еще вариант посылки нотификаций, но он вряд ли будет интересен.
Там можно посылать только на е-мэйл, пейджер или команду net send.

Вообщем выбор не очень sad.gif
PM MAIL WWW ICQ   Вверх
DENNN
Дата 22.4.2003, 13:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 3878
Регистрация: 27.3.2002
Где: Москва

Репутация: нет
Всего: 43



Да если найти способ перехвата сообщений от сервака до операционки, то можно было бы воспользоваться. smile.gif
PM ICQ   Вверх
remax
Дата 22.4.2003, 19:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Доцент
**


Профиль
Группа: Участник Клуба
Сообщений: 686
Регистрация: 7.4.2002
Где: Украина, Харьков

Репутация: нет
Всего: 5



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


Возможно (судя по тексту) проблема в неправильной организации транзакций/блокировок.

Если же вопрос только в необходимости отслеживания изменений -
то предложение AntonSaburov очень сильное. Ведь в нем предлагается задействовать одно из преимуществ MS SQL - возможность вызывать, не выходя из своей среды, некоторые функции операционки. Триггеры могут вызывать любые процедуры расширения (xp_*), имеющиеся на сервере, а также любые внешние процедуры, которые добавлены к серверу с использованием команды sp_addextendedproc .

Конечно, в IB это можно сделать более грамотно, через события, но, как говорится, имеем что имеем...



--------------------
Как бы ты не старался быть хорошим и правильным человеком с принципами и уважительным отношением к другим, всегда найдется кто-то, кто бросит в тебя какашку
PM MAIL ICQ Skype   Вверх
remax
Дата 22.4.2003, 19:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Доцент
**


Профиль
Группа: Участник Клуба
Сообщений: 686
Регистрация: 7.4.2002
Где: Украина, Харьков

Репутация: нет
Всего: 5



Цитата
Обновление по таймеру согласитесь, мягко говоря, тупой вариант

Альтернативным, улучшенным вариантом (по сравнению с таймером ;) ) может быть следующий подход. При подключении к БД создаем временную таблицу в которую заносим информацию при модификации основных данных (через триггеры). В примитиве, это может быть запись состоящая только из поля дата\время. И по таймеру обращаться к ней. Благо скорость обращения к временным таблицам очень высокая. И в зависимости от времени последнего изменения перечитываем основные данные или нет.
Разумеется это грубый набросок, который, возможно потребуется усовершенствовать или усложнить, но привлекает простотой своей реализации smile.gifsmile.gifsmile.gifsmile.gif



--------------------
Как бы ты не старался быть хорошим и правильным человеком с принципами и уважительным отношением к другим, всегда найдется кто-то, кто бросит в тебя какашку
PM MAIL ICQ Skype   Вверх
DENNN
Дата 30.4.2003, 10:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 3878
Регистрация: 27.3.2002
Где: Москва

Репутация: нет
Всего: 43



Возможно всем будет интересно узнать.
Я тут откопал, что OLE DB поддерживает интерфейс IRowsetNotify подключаемый через точки соединения.
Так вот и провайдер данных, и подключившийся могут обмениваться сообщениями, среди которых есть и уведомления о вставки в таблицу, к которой сейчас получен доступ новых записей другим подключением, об изменении данных записи где находится курсор другим процесом и т.п. ;)
PM ICQ   Вверх
Medved
Дата 4.5.2003, 09:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 7209
Регистрация: 15.9.2002
Где: Kazakhstan, Astan a

Репутация: нет
Всего: 154



Насчет MS-SQL я точно не знаю, а вот в Oracle такая фитча присутсвует. В Oracle это предусмотрено.


--------------------
http://extreme.sport-express.ru/
...и неважно сколько падал, важно сколько ты вставал...
PM MAIL WWW ICQ Skype GTalk   Вверх
DENNN
Дата 4.5.2003, 12:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 3878
Регистрация: 27.3.2002
Где: Москва

Репутация: нет
Всего: 43



Я прочитал об этом в документации MS и похоже что MS-SQL должен поддерживать такую фичу.
PM ICQ   Вверх
AntonSaburov
Дата 7.5.2003, 15:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Штурман
****


Профиль
Группа: Модератор
Сообщений: 5658
Регистрация: 2.7.2002
Где: Санкт-Петербург

Репутация: нет
Всего: 118



Цитата
Я тут откопал, что OLE DB поддерживает интерфейс IRowsetNotify подключаемый через точки соединения.


Здесь есть только одна проблема - а если я для соединения использую не OLE ?
Тот же ODBC, BDE или еще что-то. Хотя такое уже в принципе встречается не часто.
PM MAIL WWW ICQ   Вверх
DENNN
Дата 7.5.2003, 17:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 3878
Регистрация: 27.3.2002
Где: Москва

Репутация: нет
Всего: 43



Вопрос именно по OLE, что делать с BDE не имею представления, да честно говоря и ненадо smile.gif
PM ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "MS SQL"
Akina

Akina

Запрещается!

Публиковать ссылки и обсуждать взлом чего бы то ни было.

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы составления неспецифических запросов рассматриваются здесь
  • Используйте теги [code=sql][/code] для подсветки кода. Используйтe чекбокс "транслит" (возле кнопок кодов) если у Вас нет русских шрифтов.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Zloxa, Akina.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | MS SQL Server | Следующая тема »


 




[ Время генерации скрипта: 0.0515 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.