![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Работа через MS SQL Server клиентов [D6, MSSQL]
_sulent © (2004-04-06 08:34:00)Доброго дня!
У меня возникла такая проблема! Есть программа, она работает замечательно, все делает прекрасно, но вот если работают люди по сети, с этой программой (как только не пробовал, и через терминал и локально устанавливал программу чтобы по сети работала), она виснет. Причем если они делают одну задачу, т.е. работают с одним набором таблиц, то все работает замечательно, а вот если кто-то из пользователей пытается подгрузить тругую форму с другим набором таблиц, хотя ссылочная целостность сохраняется, все остальные зависают. И могут отвиснуть только тогда, когда "виновник" этого всего полностью закроет программу.
Пробовал и права и подключения одновременные ставить, все равно виснет!
В чем может быть проблема, и как ее можно будет решить?
_sulent (2004-04-06 13:38:00) [1]Решение проблемы на поверхности, если что... Уже проблема решена... так что не спорьте...
Спасибо!
Delirium (2004-04-06 13:32:00) [2]> Fay ©
"Это, по-вашему, грамотно?" - это по нашему решение проблемы "Для начала". Дальнейшие действия, человек предпримет сам, когда получит время изучить вопрос.
_sulent (2004-04-06 12:43:00) [3]Дело не в транзакции, я думал уже про это, думал даже на каждую операцию запускать транзакцию, но только что же тогда будет твориться с серваком?!
И вообще пока идет работа с занесением данных транзакция не врубается!
Запускаю я транзакцию только тогда, когда начинаю непосредственную запись! Тогда я просто не допускаю других пользователей на пользование таблиц! Естесственно могут они заниматься просмотром базы, но не редактированием.
Скорее всего просто где-то упустил выключение базы, и она скорее всего на этом деле и вылетает!
Fay (2004-04-06 11:25:00) [4]2Delirium © (06.04.04 10:24) [6]
>> поставь во всех TADOConnection IsolationLevel в lReadUncommitted.
Это, по-вашему, грамотно?
Delirium (2004-04-06 10:24:00) [5]"вот что странно..." - ничего странного, работать с уровнями изоляции надо грамотно, раз уж перешёл на серьёзную СУБД. Для начала поставь во всех TADOConnection IsolationLevel в ilReadUncommitted.
_sulent (2004-04-06 10:24:00) [6]мда... спасибо что не отказали, придется тогда все переделывать, господи.... а тама так много... ну ладно, другого выхода как я понял нет...
спасибо!
sniknik (2004-04-06 10:22:00) [7]курсор в коомпанентах используеш какой, серверный? да - перейди на локальный.
(и логику работы переделай :)
_sulent (2004-04-06 10:15:00) [8]С транзакциями все нормально, а вот это надо посмотреть... Просто эта программа была написана под MS Access, а пришлось переделывать на MS SQL Server. Причем раньше она работала нормально с аксесом, и все работало и не подвисало, просто вот что странно...
Fiend (2004-04-06 09:54:00) [9]Блокировка данных.
Какие то клиенты скажем делают select из таблицы скажем в 100 записей но весь набор не "фетчат", т.к. он им пока что весь не нужен, а другие вдруг делают апдейт для этой же таблицы, что вызывает "подвисание", т.к. селект заблокировал таблицу или страницу данных, это уже зависит от запроса.
Выход - управлять способом блокирования. Скажем при выполнении select указывать опцию with(nolock) - это чтобы выполнить вообще без блокирования данных. И вообще почитай про блокировки. Причиной могут быть так же как уже сказали выше и не завершенные транзакции
_sulent (2004-04-06 09:27:00) [10]переведи что это такое, по конкретнее можешь сказать что посмотреть и что проверить?
Вообще что проверять, потому что весь исходник перерыл, все путем...
ZrenBy (2004-04-06 09:15:00) [11]dbcc opentran что показывает ?