Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Как уведомить клиентов об изменении записей в таблице? / 21 сообщений из 21, страница 1 из 1
25.09.2014, 16:32
    #38757796
Гость5
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как уведомить клиентов об изменении записей в таблице?
Добрый вечер всем.

Если заносить изменения в БД одним клиентом, то второй (третий и т.п.) эти изменения увидит только после обновления DataSet’а.
Вопрос, есть ли в MSSQL 2008 инструменты с помощью которых в нужный момент (например через хранимую процедуру) можно отправить всем клиентам сетевое уведомление, чтоб те обновили DataSet?
...
Рейтинг: 0 / 0
25.09.2014, 16:42
    #38757817
stavgreengo
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как уведомить клиентов об изменении записей в таблице?
триггер на апдейт нужной таблицы и EXECUTE msdb.dbo.sp_notify_operator
...
Рейтинг: 0 / 0
26.09.2014, 06:04
    #38758335
aleks2
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как уведомить клиентов об изменении записей в таблице?
stavgreengoтриггер на апдейт нужной таблицы и EXECUTE msdb.dbo.sp_notify_operator
sp_notify_operator (Transact-SQL)
Sends an e-mail message to an operator using Database Mail.

Оператор не устанет письма читать?
...
Рейтинг: 0 / 0
26.09.2014, 06:07
    #38758336
aleks2
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как уведомить клиентов об изменении записей в таблице?
Гость5Добрый вечер всем.

Если заносить изменения в БД одним клиентом, то второй (третий и т.п.) эти изменения увидит только после обновления DataSet’а.
Вопрос, есть ли в MSSQL 2008 инструменты с помощью которых в нужный момент (например через хранимую процедуру) можно отправить всем клиентам сетевое уведомление, чтоб те обновили DataSet?

Есть, называется столбец rowversion (timestamp).
...
Рейтинг: 0 / 0
26.09.2014, 07:50
    #38758356
Гость5
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как уведомить клиентов об изменении записей в таблице?
aleks2Гость5Добрый вечер всем.

Если заносить изменения в БД одним клиентом, то второй (третий и т.п.) эти изменения увидит только после обновления DataSet’а.
Вопрос, есть ли в MSSQL 2008 инструменты с помощью которых в нужный момент (например через хранимую процедуру) можно отправить всем клиентам сетевое уведомление, чтоб те обновили DataSet?

Есть, называется столбец rowversion (timestamp).

Доброе утро.

Не совсем понимаю о чём речь, может завалялся примерчик))) или есть ссылка на хорошую статейку.
Если несложно в двух словах напиши как это работает (принцип работы).

Сейчас все манипуляции с данными идут через хранимые процедуры, есть табличные переменные. В самой простой форме можно сказать, что идёт создание или обновление документа "один-ко-многим" т.е. в процедуре фактически полный цикл транзакции. В процедуре может обновиться от 1-й до 100-200 строк, но после этого клиент должен получить сетевое уведомление о том что определённая таблица изменилась (хотя по ней может измениться не одна строка), для того чтобы обновить DataSet. Клиент написан на DelphiXE6 + FireDAC.

Если смотреть на идеальный вариант, то неплохо бы передать произвольный сетевой пакет клиенту, в котором можно отразить например несколько параметров + название подсистемы, которая её вызывает, по этим данным можно судить какой датасет обновлять
...
Рейтинг: 0 / 0
26.09.2014, 08:54
    #38758389
Сон Веры Павловны
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как уведомить клиентов об изменении записей в таблице?
Гость5,

в ADO.Net для таких целей используется класс SqlDependency , который, по сути, является оберткой над query notifications . Поскольку у вас Delphi, то нужно будет вручную настроить Query Notification , и запускать цикл ожидания оповещений в отдельном клиентском трэде.
...
Рейтинг: 0 / 0
26.09.2014, 09:36
    #38758418
aleks2
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как уведомить клиентов об изменении записей в таблице?
Гость5Если смотреть на идеальный вариант, то неплохо бы передать произвольный сетевой пакет клиенту, в котором можно отразить например несколько параметров + название подсистемы, которая её вызывает, по этим данным можно судить какой датасет обновлять

Если смотреть идеальный вариант - надо не фантазировать, а надо реально смотреть на вещи.
Невместно серверу париться за клиента и чего-то там ему слать.
Чем придумывать фсякие query notifications - лучше сделать простой механизм запроса клиентом наличия обновлений в таблице.
И пущай клиент париться за "обновили-необновили".
...
Рейтинг: 0 / 0
26.09.2014, 09:58
    #38758458
Гость5
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как уведомить клиентов об изменении записей в таблице?
aleks2Гость5Если смотреть на идеальный вариант, то неплохо бы передать произвольный сетевой пакет клиенту, в котором можно отразить например несколько параметров + название подсистемы, которая её вызывает, по этим данным можно судить какой датасет обновлять

Если смотреть идеальный вариант - надо не фантазировать, а надо реально смотреть на вещи.
Невместно серверу париться за клиента и чего-то там ему слать.
Чем придумывать фсякие query notifications - лучше сделать простой механизм запроса клиентом наличия обновлений в таблице.
И пущай клиент париться за "обновили-необновили".

Сейчас это есть. Сделано было неплохо. Сам проект двух-звенка, но, написана ещё служба, которая следит за сетевыми обновлениями + авто обновлением программы. Т.е. проект и не двух-звенка и не трёх, что-то между)))
Хотим исключить лишнее (на наш взгляд) звено в проекте т.к. из-за службы появились нюансы. Сейчас надо понять, можно ли эти функции возложить на MSSQL 2008 или выше или оставить как есть
...
Рейтинг: 0 / 0
26.09.2014, 10:02
    #38758468
Гость5
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как уведомить клиентов об изменении записей в таблице?
aleks2,

если как предлагаешь ты ))) спамить лишний раз сетку - это уж совсем криво, особенно если одновременно с базой будут работать 100-200 клиентов
...
Рейтинг: 0 / 0
26.09.2014, 10:27
    #38758509
baracs
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как уведомить клиентов об изменении записей в таблице?
Гость5,

Ничего, что сервер и сделан именно для того, чтобы обслуживать запросы множества клинтов?
А спамить сетку сообщениями на каждый чих в таблицах - это нормально, да?
...
Рейтинг: 0 / 0
26.09.2014, 12:01
    #38758651
Гость5
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как уведомить клиентов об изменении записей в таблице?
baracs,

я же писал!

Если смотреть на идеальный вариант, то неплохо бы передать произвольный сетевой пакет клиенту, в котором можно отразить например несколько параметров + название подсистемы, которая её вызывает, по этим данным можно судить какой датасет обновлять
...
Рейтинг: 0 / 0
26.09.2014, 12:04
    #38758654
aleks2
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как уведомить клиентов об изменении записей в таблице?
Гость5baracs,

я же писал!

Если смотреть на идеальный вариант, то неплохо бы передать произвольный сетевой пакет клиенту, в котором можно отразить например несколько параметров + название подсистемы, которая её вызывает, по этим данным можно судить какой датасет обновлять
Ну дык, передай.
В чем проблема то?

ЗЫ. Он думает, что "взял и передал", а подумать, что клиент должен "ожидать оной передачи и обрабатывать результаты" - это подумать он забыл.
...
Рейтинг: 0 / 0
26.09.2014, 13:21
    #38758816
Set666
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как уведомить клиентов об изменении записей в таблице?
Создать временную таблицу, где первый столбец будет id польователя, второй состояние допустим 0 нет обновлений 1 есть. На рабочую таблицу навесить тригер, который это состояние во временой таблице будет обновлять. Ну и с клиента через определённый период времени это состояние проверять.
...
Рейтинг: 0 / 0
26.09.2014, 14:33
    #38758934
Гость5
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как уведомить клиентов об изменении записей в таблице?
Сон Веры ПавловныГость5,

в ADO.Net для таких целей используется класс SqlDependency , который, по сути, является оберткой над query notifications . Поскольку у вас Delphi, то нужно будет вручную настроить Query Notification , и запускать цикл ожидания оповещений в отдельном клиентском трэде.

Добрый день,

смотрю Вашу идею, чтоб включить её использую ALTER DATABASE <your db name> SET ENABLE_BROKER
Вопрос, это сказывается на производительности? я правильно понимаю, это что-то типа механизма обратных вызовов?
...
Рейтинг: 0 / 0
26.09.2014, 15:02
    #38758988
prog123
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как уведомить клиентов об изменении записей в таблице?
Гость5aleks2пропущено...


Есть, называется столбец rowversion (timestamp).

Доброе утро.

Не совсем понимаю о чём речь, может завалялся примерчик))) или есть ссылка на хорошую статейку.
Если несложно в двух словах напиши как это работает (принцип работы).

Сейчас все манипуляции с данными идут через хранимые процедуры, есть табличные переменные. В самой простой форме можно сказать, что идёт создание или обновление документа "один-ко-многим" т.е. в процедуре фактически полный цикл транзакции. В процедуре может обновиться от 1-й до 100-200 строк, но после этого клиент должен получить сетевое уведомление о том что определённая таблица изменилась (хотя по ней может измениться не одна строка), для того чтобы обновить DataSet. Клиент написан на DelphiXE6 + FireDAC.

Если смотреть на идеальный вариант, то неплохо бы передать произвольный сетевой пакет клиенту, в котором можно отразить например несколько параметров + название подсистемы, которая её вызывает, по этим данным можно судить какой датасет обновлять

http://msdn.microsoft.com/en-us/library/ms175110(v=sql.105).aspx

http://forums.devart.com/viewtopic.php?f=6&t=30057
...
Рейтинг: 0 / 0
26.09.2014, 15:14
    #38759011
Гость5
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как уведомить клиентов об изменении записей в таблице?
prog123,

Спасибо,
именно это сейчас изучаю, хочу понять как это всё работает
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
24.04.2018, 11:33
    #39635226
yaxinr
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как уведомить клиентов об изменении записей в таблице?
...
Рейтинг: 0 / 0
24.04.2018, 11:58
    #39635244
yaxinr
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как уведомить клиентов об изменении записей в таблице?
...
Рейтинг: 0 / 0
24.04.2018, 12:11
    #39635252
Ролг Хупин
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как уведомить клиентов об изменении записей в таблице?
aleks2Гость5Если смотреть на идеальный вариант, то неплохо бы передать произвольный сетевой пакет клиенту, в котором можно отразить например несколько параметров + название подсистемы, которая её вызывает, по этим данным можно судить какой датасет обновлять

Если смотреть идеальный вариант - надо не фантазировать, а надо реально смотреть на вещи.
Невместно серверу париться за клиента и чего-то там ему слать.
Ч ем придумывать фсякие query notifications - лучше сделать простой механизм запроса клиентом наличия обновлений в таблице.
И пущай клиент париться за "обновили-необновили".

MS уже сделала.

Это еще вопрос, что лучше, один раз получить нотификацию об изменении или долбить запросами каждую секунду "не изменилось ли чего" + если клиентов туча
...
Рейтинг: 0 / 0
24.04.2018, 12:19
    #39635260
Владислав Колосов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как уведомить клиентов об изменении записей в таблице?
По-хорошему, сервер БД не должен являться и сервером же приложений. Оповещениями должен заниматься слой передачи данных. Прикольно иметь "все в одном", но не эффективно. Вы бы стали пользоваться пилой-молотком-ножницами?
...
Рейтинг: 0 / 0
24.04.2018, 13:14
    #39635318
Ролг Хупин
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как уведомить клиентов об изменении записей в таблице?
Ролг Хупинaleks2пропущено...


Если смотреть идеальный вариант - надо не фантазировать, а надо реально смотреть на вещи.
Невместно серверу париться за клиента и чего-то там ему слать.
Ч ем придумывать фсякие query notifications - лучше сделать простой механизм запроса клиентом наличия обновлений в таблице.
И пущай клиент париться за "обновили-необновили".

MS уже сделала.

Это еще вопрос, что лучше, один раз получить нотификацию об изменении или долбить запросами каждую секунду "не изменилось ли чего" + если клиентов туча

вот я повелся на поднятую из 2014 года тему
...
Рейтинг: 0 / 0
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Как уведомить клиентов об изменении записей в таблице? / 21 сообщений из 21, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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