powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Оч-чень нетривиальный вопрос
14 сообщений из 14, страница 1 из 1
Оч-чень нетривиальный вопрос
    #32055504
Mich
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Доброе время суток!
Организация разрабатывает проект средней величины, пользоваться которым будут 50 - 100 клиентов. По условию ввод в эксплуатацию будет осуществлен при написании 70% кода. Естественно, возникает проблема своевременного обновления клиентов. Делать собираюсь так: при соединении с базой клиент делает select из таблицы со следующими полями [Version, Valid, Note], если новых версий не появилось, то работает, если появились и поле Valid не запрещает работу в текущей версии клиента, то показывает юзеру Note (список изменений) и позволяет ему самому решать стоит ли апдейтиться. И, наконец, если Valid запрещает работу этой версии, то только апдейт.
Получается очень удобно, стоит добавить одну строку и изменить другую в соответствующей таблице и всем клиентам, присоединившимся ПОСЛЕ этого будет предложено/предписано обновиться.
ВОПРОС: А как быть с РАНЕЕ подключившимися? Можно каждые 10-30 минут повторять контроль версий, но 1) это неэстетично 2) при изменении структуры базы, старый клиент за 10-30 мин. сумеет ее основательно покалечить. Можно в каждого клиента посадить TCP-клиента (тавтология, однако), заставить при старте коннектиться к какому-нибудь серверу, что бы в нужный момент иметь возможность передать всем клиентам команду на апдейт. Вариант плох, т.к необходимо держать запущенный сервер, что не прибавляет надежности системе и , самое главное, бОльшая часть клиентов находится вне локальной сети. За файерволом. Некоторые не за одним. Зарежут.
Хотелось бы прибегнуть к услугам самого Oracle. Неужели он не может послать Notification о каком либо событии определенным клиентам? Если не предусмотрено именно это , так может есть обходные пути? Заранее благодарен.
______
...
Рейтинг: 0 / 0
Оч-чень нетривиальный вопрос
    #32055515
Фотография Lexis
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1.про инициализации соединения проверять версию клиента, если что - отвергать коннект
2. как вы собираетесь при работающих клиентах вносить изменения в базу? все равно будете это делать это в нерабочее время :)
...
Рейтинг: 0 / 0
Оч-чень нетривиальный вопрос
    #32055519
Фотография Александр Гладченко
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
По моему, вы пытаетесь подменить организационные меры - техническими...
У Вас что, не будет тестового сервера или тестовой базы?
Как то не вериться, что кому то может понравиться, когда у него вдруг начинает самопроизвольно устанавливаться новая версия программы, меняется интерфейс, сущности или что-нибудь другое, к чему уже привыкли...
...
Рейтинг: 0 / 0
Оч-чень нетривиальный вопрос
    #32055521
Фотография Maxx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Была похожая ситуейшен. Бывший нач.проекта придумал следуещее
Состоит ета идея из 3 частей, файла приложения,скрипта и настроечного xml.
Действие на серваке делаеться папка куда кладеться настроечный xml для сервера,и версия проги,у клиента тоже настроечный xml ,скрипт и прога.Запускаеться все с ярлыка куда прписан вызов скрипта. Если версии в настроечном(сервер) xml не совпадвют с клиентским сначала переписываетьяс файл проги,а потом запускается.
...
Рейтинг: 0 / 0
Оч-чень нетривиальный вопрос
    #32055533
dkstranger
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Решается ли проблема (по крайней мере,
ее часть) отключением всех коннектов на время
смены версии?
...
Рейтинг: 0 / 0
Оч-чень нетривиальный вопрос
    #32055555
Bzzzzz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Если я правильно понимаю задачу, то на время обновления придется устраивать одну нехилую транзакцию(иначе возможны коллизии между объектами БД), после которой пользователи окунуться в мир незабываемых ощущений... Однозначно, клиентская часть НЕ СМОЖЕТ обновиться "на лету" - по-любому покинуть придется... Дык, тогда почему пользователей не выгнать до установки, ведь продолжать работать они не смогут по определению!
...
Рейтинг: 0 / 0
Оч-чень нетривиальный вопрос
    #32055567
Mich
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Не в тот форум запостил Х-)
Но, что интересно, ответы получил.
>По моему, вы пытаетесь подменить организационные меры - техническими...
Боюсь что этими организационными мерами придется заниматься разработчикам. И мне в том числе. Посему попытался перевести проблему в техническую сферу.
To dkstranger:
При отключении у клиента выскакивает ошибка => звонок разработчикам*50=очень много времени и нервов.
При частых отключениях может быть подана рекламация, они ведь не разбираются из-за чего выскакивает ошибка.
Зачем мне лишняя головная боль?
__________
...
Рейтинг: 0 / 0
Оч-чень нетривиальный вопрос
    #32055569
lvv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
lvv
Гость
В Oracle есть такие штуки как Alert
Можно повесить Alert, когда изменится версия сообщить клиенту пора дорогой пора, вызвать прогу обновления и т.д. Можно конечно просто таймер повесить скажем проверять каждые 10 минут есть новая версия или нет?
...
Рейтинг: 0 / 0
Оч-чень нетривиальный вопрос
    #32055605
Фотография VVG_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вообще говоря, надо проверять версионность перед началом каждой судьбоносной операции на клиенте.

Маленький запросик о версии. Или еще лучше - вызов SP, которую после стадии разработки можно изменить, чтобы всегда истину возвращала.

Если не совпадает - окошко "обновляй" с кнопкой "Обновить". Тогда юзеры быстро привыкнут и вопить не будут.
...
Рейтинг: 0 / 0
Оч-чень нетривиальный вопрос
    #32055629
Фотография Gobzo Kobler
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
До чего люди на трудности падки...
С шары запускать клиента не пробовали?
...
Рейтинг: 0 / 0
Оч-чень нетривиальный вопрос
    #32055643
Tulkin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
xp_cmdshell 'net send  all ''Раз,два,три,четыре,пять.Начинаю отключать!Через 30 секунд всех вырублю.Кто не сохранился,я не виноват!!!!!!!'

ALTER DATABASE DB_NAME set SINGLE_USER  with rollback after  30  seconds

begin_alter
...
end_alter

ALTER DATABASE DB_NAME set MULTI_USER   


Такое не поможет?
...
Рейтинг: 0 / 0
Оч-чень нетривиальный вопрос
    #32055657
Фотография Сергей Тихонов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Зачем столько споров???
Релиз не выпускается раз в 10 минут. Нормальная ситуация - один раз в неделю, не чаще. Перед сиим действием народу пишется письмо: мол так и так, начинается выкладывание релиза, могут быть траблы в работе... После выкладывания - письмо: мол так и так, то-то изменено, то-то требует обновления (это не значит, что версионность проверять не надо...).
А если вдруг глючок какой в процедуре подправить, так это можно тихонько сделать, никто и не заметит...

ЗЫ
Забыл сказать. Релиз нужно вечером выкладывать, когда юзерская активность - минимальна.
...
Рейтинг: 0 / 0
Оч-чень нетривиальный вопрос
    #32055813
Mich
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Масса пищи для размышлений.
Огромное спасибо всем принявшим участие в решении проблемы!
______
...
Рейтинг: 0 / 0
Оч-чень нетривиальный вопрос
    #32055854
Фотография akuz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Делать собираюсь так: при соединении с базой клиент делает select из таблицы со следующими полями [Version, Valid, Note], если новых версий не появилось, то работает, если появились и поле Valid не запрещает работу в текущей версии клиента, то показывает юзеру Note (список изменений) и позволяет ему самому решать стоит ли апдейтиться. И, наконец, если Valid запрещает работу этой версии, то только апдейт.
Впринципе нормальный подход.
Можно каждые 10-30 минут повторять контроль версий
Замените на
Можно перед каждым вызовом SQL повторять контроль версий
И всё заработает.
...
Рейтинг: 0 / 0
14 сообщений из 14, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Оч-чень нетривиальный вопрос
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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