Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Блокировки в SQL Server
|
|||
|---|---|---|---|
|
#18+
Не раз читал, что функция RecordCount очень не надёжная и лучше выполнить select count(*) from... оцените ,правильно ли построена такая конструкция, а то я с блокировками ещё плаваю :-) --делаем выборку и блокируем её на запись begin trans select M.* from OB_MODEL M WITH (TABLOCK HOLDLOCK) select count(*) from ob_model commit trans И ещё попутно вопрос: впорядке эксперимента сделал следущее При запуске приложения ADOConnection.BeginTran Перед выходом ADOConnection.CommitTrans Т.е. запущена одна длительная транзакция с уровнем изоляции Serializable Запускаю вторую копию приложения, делаю там Update записи и приложение подвисает секунд на 40 а потом вылетает по таймауту. Где устанавливается это время? Сначала я думал, что CommandTimeOut, но что-то совершенно не влияет изменение этого параметра. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.03.2003, 08:49 |
|
||
|
Блокировки в SQL Server
|
|||
|---|---|---|---|
|
#18+
На самом деле 30 сек таймаут. В делфи вродеб не реализовали ту property которая за таймаут отвечает. А вот делаем выборку и блокируем всю таблицу на клиенте, это для клиент-серверных приложений очень плохая практика. Это называется один работает, а другие отдыхают ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.03.2003, 09:08 |
|
||
|
Блокировки в SQL Server
|
|||
|---|---|---|---|
|
#18+
у.. еб.. а в чем проблема с RecordCount ?.. (а то я довольно часто ею пользуюсь..).. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.03.2003, 09:13 |
|
||
|
Блокировки в SQL Server
|
|||
|---|---|---|---|
|
#18+
Предположу, что проблема с тем, чтобы корректно отработала эта функция, необходим полный fetch что не есть хорошо и самостоятельно компоненты этого не делают ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.03.2003, 09:53 |
|
||
|
Блокировки в SQL Server
|
|||
|---|---|---|---|
|
#18+
А зачем тебе тут вообще транзакции? А почитать про них вообще? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.03.2003, 10:29 |
|
||
|
Блокировки в SQL Server
|
|||
|---|---|---|---|
|
#18+
>А зачем тебе тут вообще транзакции? >А почитать про них вообще? Прочитал. Но не всё же сразу понятно. Вот я и спрашиваю, как правильно. Ещё раз суть проблемы: в одном ADOQuery получаем набор данных. Следующей командой получаем количество. Между этими командами теоритически в таблице можно что-то поменять, например запись добавить. ыудусе * from OB_MODEL M WITH (TABLOCK HOLDLOCK) блокирует таблицу на время транзакции. Если без HOLDLOCK то только на время выполнения команды. Это я так понял? Короче, как правильно обеспечить идентичность двух выборок? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.03.2003, 11:24 |
|
||
|
Блокировки в SQL Server
|
|||
|---|---|---|---|
|
#18+
>Не раз читал, что функция RecordCount очень не надёжная Где читал, что значит ненадежная . Какой тип курсора используешь. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.03.2003, 11:32 |
|
||
|
Блокировки в SQL Server
|
|||
|---|---|---|---|
|
#18+
Так подскажет кто-нибудь, или это очень сложно? :-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.03.2003, 23:14 |
|
||
|
Блокировки в SQL Server
|
|||
|---|---|---|---|
|
#18+
Что тебе подсказать. 1. Не объявляй транзакцию. 2. Убери запрос с подсчетом колва строк. 3. Курсор должен быть клиентским. 4. Используй TADODataSet.RecordCount. Или напиши, где у тебя конкретно были с ним проблемы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.03.2003, 08:48 |
|
||
|
Блокировки в SQL Server
|
|||
|---|---|---|---|
|
#18+
Неправильное количество записей возвращает. Были проблемы с Paradox и IB. Необходимо делать либо LAST либо FETCHALL. Может с SQL Server это не так, пока не нарывался, в чём я сильно сомневаюсь. И всё таки мой вопрос (отойдём от RecordCount), как правильно обеспечить выполнение двух запросов из одной таблицы, что бы в промежуток между первым и вторым запросом ничего там не изменилось, или как вариант, второй запрос не видел изменения. Хелп я читал, если бы всё до конца понял ,зедсь бы не спрашивал ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.03.2003, 11:19 |
|
||
|
Блокировки в SQL Server
|
|||
|---|---|---|---|
|
#18+
Ну так и сделай FETCHALL. Ну уж если очень приспичило, напиши процедуру: Код: plaintext 1. 2. 3. 4. 5. 6. Открывай TADOStoredProc и читай параметр. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.03.2003, 11:24 |
|
||
|
Блокировки в SQL Server
|
|||
|---|---|---|---|
|
#18+
да не про RecordCount уже вопрос. Читай внимательно предыдущее сообщение. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.03.2003, 11:29 |
|
||
|
Блокировки в SQL Server
|
|||
|---|---|---|---|
|
#18+
>как правильно обеспечить выполнение двух запросов из одной таблицы Ты про это, что-ли. Если в голой теории то BEGIN TRAN SELECT 1 SELECT 2 COMMIT TRAN Вот тока объясни, зачем? И убери из запросов хинты Уровень изоляции выставь READ COMMITED. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.03.2003, 11:37 |
|
||
|
|

start [/forum/topic.php?fid=58&fpage=2057&tid=2118839]: |
0ms |
get settings: |
7ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
35ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
46ms |
get tp. blocked users: |
1ms |
| others: | 249ms |
| total: | 371ms |

| 0 / 0 |
