Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Прервать выполнение запроса [D5, MSSQL]


Страницы:   1 2

MakNik ©   (2004-07-21 09:53:00) 

Есть некий запрос, который выполняется достаточно долго (порядка 10 мин.)... Подскажите, плз., как после команды ADOQuery.Active:=true; ...  дать возможность пользователю корректно отказаться от завершения выполнения запроса?


Ega23   (2004-07-21 18:30:00) [1]

а не изобретаешь ли ты велосипед? неужели MS SQL так слаб? Все хаят IB ,так там роли хоть есть.

Роли и в MS SQL есть.

Дело в том, что очень часто клиенту приходится выполнять различные вещи (типа backup/restore, или запуск xp_...), которые требуют роли админа. При этом давать напрямую роль админа юзеру - нехорошо. Вот и приходится так изгаляться.

Я уже как-то раз расписывал логику работы моего клиента, обсуждение было очень бурным. В двух словах: есть таблица, так сказать, операций, которые можно проводить с клиента. Это промотр/модификация справочных таблиц, получение различных отчётов и т.п. Также есть таблица юзеров, где каждому юзеру прописаны права на работу с клиентской программой. С одной стороны всё это можно расписать путём введения различных ролей и раздачи этим ролям прав на работу с конечными таблицами. Но: уровень подготовки "администраторов" на объектах весьма слаб. Поэтому мы постарались максимально ограничить работу администратора с "родными" средствами MS SQL (Enterprise Manager в чатности).
Вот отсюда и родилась такая "дикая" логика раздачи прав.


Соловьев   (2004-07-21 18:14:00) [2]


> Первоначальный запрос к базе - юзер имеет права только на
> чтение одной таблицы, в которой лежат админовский логин
> и пароль

а не изобретаешь ли ты велосипед? неужели MS SQL так слаб? Все хаят IB ,так там роли хоть есть.


Ega23   (2004-07-21 18:11:00) [3]

Не, ну ты не сравнивай сервер со своим ПО. Или в майкрософт работаешь?

1. Сломать можно свё, вопрос времени.
2. Если человек умеет "ломать" ПО в поисках админовкого доступа к базе, то по специфике работы такие люди на объектах сами админами становятся. :о)


Fiend   (2004-07-21 17:54:00) [4]

Не, ну ты не сравнивай сервер со своим ПО. Или в майкрософт работаешь?


Ega23   (2004-07-21 17:06:00) [5]

А прикинь, я поломаю механизм "дешифрования"

С таким же успехои ты сам сервер поломать можешь.


Fiend   (2004-07-21 16:58:00) [6]

То Ega23 ©   (21.07.04 16:30) [31]
А прикинь, я поломаю механизм "дешифрования"


Ega23   (2004-07-21 16:30:00) [7]

Fiend ©   (21.07.04 16:20) [30]

А что смешного?
Первоначальный запрос к базе - юзер имеет права только на чтение одной таблицы, в которой лежат админовский логин и пароль (зашифрованные, естественно). Клиент их получает, декодирует и делает реконнект, но уже как админ.
Но: интерфейсно ты никаких различий не увидишь.


Fiend   (2004-07-21 16:20:00) [8]

То Ega23 ©   (21.07.04 16:16) [29]
Из клиентской программы? которая фиг знает где? Админский коннект? Ну ты даёшь!!!
Просто "мастер безопасности"!!! :)


Ega23   (2004-07-21 16:16:00) [9]

А у меня основной коннект с базой всегда по админовской роли идёт.


Fiend   (2004-07-21 16:03:00) [10]

А я вот 100% уверен.
из скрипта можно воспользоваться только KILL
но на него соответствующие права

KILL permissions default to the members of the sysadmin and processadmin fixed database roles, and are not transferable.

из чего следует что права нельзя даже передать не админу. Посему, даже не играйся. :)


Ega23   (2004-07-21 15:54:00) [11]

ну для этого надо с админскими правами работать

Не уверен.
Вечером поиграюсь с этими делами, завтра постараюсь некий "отчёт" состряпать.


Fiend   (2004-07-21 15:51:00) [12]

ну для этого надо с админскими правами работать


Ega23   (2004-07-21 15:50:00) [13]

Так я и без твоего ADOCommand.Cancel могу это сделать. Всё скриптом обычным делается.


Fiend   (2004-07-21 15:42:00) [14]

то Ega23 ©   (21.07.04 15:38) [23]
ты вериятно не почитал ветку. Это мы уже говорим о том чтобы удостовериться в остановке выполнения


Ega23   (2004-07-21 15:38:00) [15]

Главное ЕМ иметь под рукой.

Гы, вот мы и вернулись к [2].


Fiend   (2004-07-21 15:24:00) [16]

Та неееее, с клиента тоже можно. Главное ЕМ иметь под рукой.
На счёт прав конечно не помню, ибо я то хожу всегда под админом.


Johnmen   (2004-07-21 15:21:00) [17]

Я кажись понял. Ты смотришь на сервере активность ? А мне сервер не доступен. Я только клиент. И видимо мне не дозволено смотреть...
:)


Fiend   (2004-07-21 15:15:00) [18]

наверна, там путь к нему такой
Сервер->Management->Current Activity-> а дальше либо процессы посмотреть, либо блокировки по объектам либо по процессам.


> >ты же ведь Enterprise manager видел?
>
> :) Дык...

извини что усомнился :)


Johnmen   (2004-07-21 15:10:00) [19]

Понятно. Еще раз спасибо.

>ты же ведь Enterprise manager видел?

:) Дык...
Только тек.активности не видел. Не туда смотрел ?


Fiend   (2004-07-21 15:04:00) [20]

Там показывает активность сервера по коннектам.
Запускаем запрос и смортим, оно пишет мол выполняю то-то и текст запроса показывает. Прерываем - показывает на моём коннекте, мол сплю, жду запросов.

ты же ведь Enterprise manager видел?


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо