|
|
|
Выполнение определенного скрипта(процедуры) при каждом подключении к базе ASA7
|
|||
|---|---|---|---|
|
#18+
Можно ли сделать проверку на базе(выполнение процедуры), при каждом подключении к базе. Нужно это для ведения статистики: кто, когда с какого приложения подключился, проверка монопольности подключения если надо. Если можно то как? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.09.2004, 15:20 |
|
||
|
Выполнение определенного скрипта(процедуры) при каждом подключении к базе ASA7
|
|||
|---|---|---|---|
|
#18+
Посмотри вот это: http://www.sql.ru/forum/actualthread.aspx?tid=123228 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.09.2004, 15:26 |
|
||
|
Выполнение определенного скрипта(процедуры) при каждом подключении к базе ASA7
|
|||
|---|---|---|---|
|
#18+
Спасибо, именно то. Но проблема - не могу вывести уведомление пользователю и закрыть соединение. может в ASA7 надо иначе поступать? Попитка1: из BOL Version 8.0.1 create procedure DBA.login_check() begin declare INVALID_LOGON exception for sqlstate '28000'; // Allow a maximum of 3 concurrent connections if( db_property('ConnCount') > 3 ) then signal INVALID_LOGON; //ничего не происходит else call sp_login_environment; end if; end go grant execute on DBA.login_check to PUBLIC go set option PUBLIC.Login_procedure='DBA.login_check' Попитка2: из Форума, средство от ASCRUS REATE PROCEDURE sp_OnLogin () BEGIN DECLARE @Conn_id bigint; DECLARE LOCAL TEMPORARY TABLE #Users ( UserName varchar(128) NOT NULL PRIMARY KEY ); // Проверяем на присутствие уже залогиненных пользователей SET @Conn_id = NEXT_CONNECTION(NULL); WHILE @Conn_id IS NOT NULL LOOP INSERT INTO #Users(UserName) VALUES(Connection_Property('UserId', @Conn_id)); SET @Conn_id = NEXT_CONNECTION(@Conn_id); END LOOP; // Вызываем стандартную инициализацию сервера CALL sp_login_environment (); // Инициализируем глобальные переменные и еще что нибудь делаем // ... EXCEPTION WHEN OTHERS THEN RAISERROR 20000 'Такой пользователь уже подключен'; //не выполняется END; grant execute on DBA.sp_OnLogin to PUBLIC go set option PUBLIC.Login_procedure='DBA.sp_OnLogin' ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.09.2004, 18:14 |
|
||
|
Выполнение определенного скрипта(процедуры) при каждом подключении к базе ASA7
|
|||
|---|---|---|---|
|
#18+
Вот тут я ничего сказать про 7-ку не могу, так как не работал с ней. Нужно ее BOL рыть в сторону LOGIN_PROCEDURE и смотреть, может быть в этой версии еще не обрабатывались возникающие в ней ошибки. В 8-ке и 9-ке оба решения будут гарантированно работать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.09.2004, 18:25 |
|
||
|
Выполнение определенного скрипта(процедуры) при каждом подключении к базе ASA7
|
|||
|---|---|---|---|
|
#18+
А если попробовать не RAISEERROR а SIGNAL? И корректно обработать процедуру логина на клиенте? Должно ж сработать! Может, нужно другой exception генерировать? С другим номером? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.09.2004, 18:50 |
|
||
|
Выполнение определенного скрипта(процедуры) при каждом подключении к базе ASA7
|
|||
|---|---|---|---|
|
#18+
На сколько я понял. RAISERROR, SIGNAL - генерируют ошыбку и выводят предупреждение для клиента. для аса7 в BOL вычитал что SQLSTATE = 28000 - Invalid user id or password попытка1: declare INVALID_LOGON exception for sqlstate value '28000'; signal INVALID_LOGON; попытка2: raiserror 28000 'Invalid user ID or password'; сообщение выводится, но соединение не разрывается. примера в BOL проверки подключения для аса7 не нашел. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.09.2004, 14:50 |
|
||
|
Выполнение определенного скрипта(процедуры) при каждом подключении к базе ASA7
|
|||
|---|---|---|---|
|
#18+
А ты на клиенте обрабатываешь ошибку? Что-то типа if(!transaction->Connect()) { WMessage("Куда ты снова лезешь?" :)"); Close(); } ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.09.2004, 17:23 |
|
||
|
Выполнение определенного скрипта(процедуры) при каждом подключении к базе ASA7
|
|||
|---|---|---|---|
|
#18+
Попробую сам и напишу о результате ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.09.2004, 17:31 |
|
||
|
Выполнение определенного скрипта(процедуры) при каждом подключении к базе ASA7
|
|||
|---|---|---|---|
|
#18+
Для теста был использован ASA7.0.4 build 3498 Создана пустая база, создана процедура из примера ASCRUS Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. В ISQL выполнена команда Код: plaintext 1. Создан юзер user1, ему дана пермиссия на выполнение процедуры dba.sp_OnLogin() Написано маленькое приложение, контролирующее удачность коннекта и запущен сервер ASA с этой базой. Результат: больше одного коннекта user1 сделать не может, если включить сообщения ODBC то вылезает окошко с надписью 'Такой пользователь уже подключен' Т.е. все РАБОТАЕТ ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.09.2004, 20:29 |
|
||
|
Выполнение определенного скрипта(процедуры) при каждом подключении к базе ASA7
|
|||
|---|---|---|---|
|
#18+
поставил у себя такую же процедуру Дал пользователю на нее права, запускаю приложение. sqlca.DBParm= /*Параметры подключения*/ Connect; //если правильно вводить лигин и пароль то //sqlca.SqlCode всегда = 0 ///??????? IF sqlca.SqlCode <> 0 THEN HALT CLOSE ELSE ENDIF ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.09.2004, 21:35 |
|
||
|
Выполнение определенного скрипта(процедуры) при каждом подключении к базе ASA7
|
|||
|---|---|---|---|
|
#18+
А через что ты к серверу лезешь? Какой интерфейс? ODBC,ADO...? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.09.2004, 23:28 |
|
||
|
Выполнение определенного скрипта(процедуры) при каждом подключении к базе ASA7
|
|||
|---|---|---|---|
|
#18+
Тест у меня работает через ODBC Я пробовал, даже если коннектиться через Central, все равно ругается и отказывается подключаться более 1-го раза. Попробуй ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.09.2004, 23:30 |
|
||
|
Выполнение определенного скрипта(процедуры) при каждом подключении к базе ASA7
|
|||
|---|---|---|---|
|
#18+
А номер билда то какой ? Может старый и там это не поддерживалось ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.09.2004, 13:25 |
|
||
|
Выполнение определенного скрипта(процедуры) при каждом подключении к базе ASA7
|
|||
|---|---|---|---|
|
#18+
Через ODBC. версия ASA 7.0.1.918 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.09.2004, 09:12 |
|
||
|
Выполнение определенного скрипта(процедуры) при каждом подключении к базе ASA7
|
|||
|---|---|---|---|
|
#18+
Сравни с моей MustLive Для теста был использован ASA7.0.4 build 3498 и почувствуй разницу. Кажется, назрел version upgrade ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.09.2004, 10:44 |
|
||
|
Выполнение определенного скрипта(процедуры) при каждом подключении к базе ASA7
|
|||
|---|---|---|---|
|
#18+
Спасибо mustlive и ARCRUS. Действительно поставил версию ASA 7.0.4.3529 , и все заработало как часики. Пора делать upgrade. :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.09.2004, 17:29 |
|
||
|
|

start [/forum/topic.php?fid=55&msg=32708721&tid=2014198]: |
0ms |
get settings: |
10ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
62ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
56ms |
get tp. blocked users: |
2ms |
| others: | 226ms |
| total: | 392ms |

| 0 / 0 |

Извините, этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
... ля, ля, ля ...