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

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

Коды ошибок провайдера. [D7, MSSQL]


Страницы:   1 2 3

Bless ©   (2006-08-18 15:13:00) 

Где можно узнать перечень сабжей с текстовым описанием для SQL Server-а?
Может искать не умею, но поиск по MSDN ничего не дал.


Bless   (2006-08-18 17:47:00) [21]


> Ega23 ©   (18.08.06 17:22) [25]
>
> Если всё-таки надо непременно з грида, то да, через CDS.
>
>


Жаль :(


Ega23   (2006-08-18 17:24:00) [22]


> Кстати, а если АРМ завис, а пользователь решил воспользовать
> случаем и пошел кофе попить, пока машина перегружается.
> А его блокировки так и остались, пока он в следующий раз
> программу не запустит? А если другой человек с этими записями
> поработать хочет, то придется ждать пока первый кофе допьет,
>  вернется и запустит программу?


В общем случае - да. Но за 5 лет работы на серьёзном объекте (бюро пропусков, предприятие > 12000 сотрудников), такое ни разу не случалось.


Bless   (2006-08-18 17:22:00) [23]

Вот е-мое. Это ж в России рабочий день закончился. ;(


Ega23   (2006-08-18 17:22:00) [24]


> У вас гриды есть? А изменять через них можно?
> Если оба ответа "да", то как вы подсовываете ADODataset-
> у хранимку вместо сформированного им самим запроса. Или
> у вас ClientDataSet-ы кругом поверх ADODataSet-ов? Или..
> . В ощем, как у вас?
>


Гриды есть, только изменять из них нельзя. Вызывай модальный диалог, там все свойства данной сущности перечислены. Если всё-таки надо непременно из грида, то да, через CDS.
Просто в гриде зачастую очень трудно отобразить все поля сущности.


Bless   (2006-08-18 17:21:00) [25]


>  При старте программы все блокировки данного АРМа вычищаются
> (это если завис и не убрал сам).


Кстати, а если АРМ завис, а пользователь решил воспользовать случаем и пошел кофе попить, пока машина перегружается.
А его блокировки так и остались, пока он в следующий раз программу не запустит? А если другой человек с этими записями поработать хочет, то придется ждать пока первый кофе допьет, вернется и запустит программу?


Bless   (2006-08-18 17:13:00) [26]


> clickmaker ©   (18.08.06 16:54) [17]
>
> 1. Клиентская прога должна работать под внутренним логином
> и паролем, который может не знать даже админ.


Гм... А если, к примеру, им часто нужны разнообразные запросы для отчетов и я хочу дать им возможность делать select-ы из некоторых таблиц (но только select-ы!), к примеру поставив Query Analizer, то придется обломаться?
Или у вас отчетные возможности таковы, что покрывают все их фантазии?


Bless   (2006-08-18 17:07:00) [27]


> Ega23 ©   (18.08.06 17:00) [18]
>
> Да, я бы ещё один пункт добавил: никаких прямых Insert-Update-
> Delete-Select. Всё ТОЛЬКО через ХП.


Замечательный пункт. Давно хотел об этом поговорить, да не с кем :)
У вас гриды есть? А изменять через них можно?
Если оба ответа "да", то как вы подсовываете ADODataset-у хранимку вместо сформированного им самим запроса. Или у вас ClientDataSet-ы кругом поверх ADODataSet-ов? Или... В ощем, как у вас?

PS отклонились от сабжа, ну и черт с ним, это интересней ;)


Bless   (2006-08-18 17:03:00) [28]

Bless ©   (18.08.06 17:02) [19]>

Впрочем, ладно, наверное я параноик.


Bless   (2006-08-18 17:02:00) [29]


> Ega23 ©   (18.08.06 16:51) [15]
>
> А как он соврёт? Клиент только логин-пассворд вводит, IP
> автоматом берётся.


Т.е. как в [12]? IP-адрес формирует клиентская программа, передает его серверу, который уже с этим переданным IP-адресом работает?
А кто мешает мне, вредному юзеру с язвой желудка, написать своего клиента, но вместо своего IP-адреса посылать чужой.
Права, я так понимаю, у вас на логин/пароль даются, а не на IP, т.е. новых прав я не получу, но все блокировки, наложенные этим ip-адресом, если он сейчас параллельно работает, сниму (ты ж говорил, при старте программы все блокировки данного АРМа вычищаются). А это ж нехорошо.


Ega23   (2006-08-18 17:00:00) [30]

Согласен по всем пяти пунктам. Именно так у нас и построено. С первого по пятый.
Разве что ХП пока (но только пока) не шифруем, ибо откатка идёт. В финальном релизе всё зашифровано будет.

Да, я бы ещё один пункт добавил: никаких прямых Insert-Update-Delete-Select. Всё ТОЛЬКО через ХП.


clickmaker   (2006-08-18 16:54:00) [31]

если по хорошему, то:
1. Клиентская прога должна работать под внутренним логином и паролем, который может не знать даже админ.
2. Доступ на запись к хранимкам и базе вообще не давать никому, кроме админа и этого логина
3. Идентификация пользователей АРМ должна решаться НЕ средствами SQL, а с помощью своих собственных логинов-паролей (хэшей)
4. Хранимки надо шифровать
5. Блокировки - на уровне АРМов, а не сиквельных уровней изоляции (ну это уже Ega сказал)

Тогда не будет нехороших клиентов с нехорошими целями )


Bless   (2006-08-18 16:52:00) [32]


> clickmaker ©   (18.08.06 16:46) [14]
> в газенваген )


:)


Ega23   (2006-08-18 16:51:00) [33]


> А если клиент соврал с нехорошими целями?


А как он соврёт? Клиент только логин-пассворд вводит, IP автоматом берётся.


clickmaker   (2006-08-18 16:46:00) [34]


> А если клиент соврал с нехорошими целями?

в газенваген )


Bless   (2006-08-18 16:43:00) [35]


> clickmaker ©   (18.08.06 16:39) [12]>


А если клиент соврал с нехорошими целями?


clickmaker   (2006-08-18 16:39:00) [36]


> А как в TSQL получить IP-адрес?

передать с клиента при логоне


Bless   (2006-08-18 16:30:00) [37]


> АРМ идентифицируется через IP (или сетевое имя, это как
> угодно)


А как в TSQL получить IP-адрес?


Bless   (2006-08-18 16:28:00) [38]


> sniknik ©   (18.08.06 16:07) [7]
>
> указываеш тип обновлений по ключу. а не всей записи (Properties['Update
> Criteria'].Value:= adCriteriaKey, можно в "афтеропен" например
> )... мало того что ошибки не будет так еще и быстрее работать
> будет.
>


Можно и так, конечно. Но все же хотелось не записать изменения в базу в любом случае, а просто, раз уж я напоролся на измененную запись, перезапросить ее, чтоб была в актуальном состоянии.
Т.е. меня уставивает мой вариант в [3], где  вместо
//тут типа отловил
будет что-то типа
       q.Cancel;
       RefreshCurRec(q);//обновить текущую запись датасета


Просто хочу уверенности, что вариант q.connection.Errors[0].NativeError=32 - единсвенная реакция провайдера на измененные после меня данные.


Ega23   (2006-08-18 16:21:00) [39]


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


У нас оператор - живой человек за клиентским АРМ-ом работает. Поэтому, когда запись заблокирована одним, то другой при попытке обратиться к ней (точнее - начать редактирование) получит мессадж, типа "Запись такая-то обрабатывается таким-то на таком-то АРМе". При старте программы все блокировки данного АРМа вычищаются (это если завис и не убрал сам).


> и что используется в качестве идентификатора клиента.


Список операторов храниться в БД: ФИО, логин, пароль (там сложнее, но это к делу не относится). Также есть таблица возможных АРМов. АРМ идентифицируется через IP (или сетевое имя, это как угодно). Оператор - через логин, пассворд и дату входа. Если данный оператор в данное время с данного АРМа работать не может - в газенваген.

В общих чертах так.


Bless   (2006-08-18 16:11:00) [40]


> Ega23 ©   (18.08.06 16:00) [6]
>
> Тогда отдельную таблицу блокировок записей по разным клиентам.
>


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


Страницы:   1 2 3

Наверх

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