powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / SQL Server + MS Access - 2000. Блокировка записей.
25 сообщений из 31, страница 1 из 2
SQL Server + MS Access - 2000. Блокировка записей.
    #32437896
AVKr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Понимаю, что проблема стандартная, но найти решение не получается.

Есть БД на SQL Server-2000. К ней два типа клиентов (оба - Акцесс-2000, формат mdb). Один - на ввод данных, второй - на поиск, выборки, просмотр и т.п. Проблема такая: если кто-то начинает заниматься выборками, то ввод сразу подвисает. И выборки сразу же перестают делаться. Получается стандартная ситуация: "белый человек, смотрящий сквозь прозрачное стекло на песочные часы".

Что делать-то? И где искать решение - на сервере или клиенте?
...
Рейтинг: 0 / 0
SQL Server + MS Access - 2000. Блокировка записей.
    #32437920
Фотография Senin Viktor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1. Нафиг отказать от mdb и перейти на adp или активней использовать запросы к серверу
2. что-то еще

==
а индексы есть?
...
Рейтинг: 0 / 0
SQL Server + MS Access - 2000. Блокировка записей.
    #32437937
AVKr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
1. Прямо по больному месту получил!:) Ситуация дурацкая: пока нет 100%-ой вероятности, что основой останется именно SQL-Server. Возможен переход на Оракл. Мало того, клиенты в ряде случаев и с Акцессной базой работают! Бред, одним словом. Но от mdb в ближайшем будущем отказаться не имею права. Поэтому приходится искать решение именно в этом формате.

2. Индексов нет.
...
Рейтинг: 0 / 0
SQL Server + MS Access - 2000. Блокировка записей.
    #32437951
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
2. Ужасно плохо.
...
Рейтинг: 0 / 0
SQL Server + MS Access - 2000. Блокировка записей.
    #32437973
Фотография Senin Viktor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Но от mdb в ближайшем будущем отказаться не имею права

Тогда остается только запросы к серверу (таким образом перенесешь логику работы на сервер) и ОБЯЗАТЕЛЬНО создание индексов - ты Профайлером посмотри - у тебя скорей всего при запросе 1 записи из мульона - сканиться вся таблица и все из-за отсуствия индексов
...
Рейтинг: 0 / 0
SQL Server + MS Access - 2000. Блокировка записей.
    #32438008
AVKr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
С запросами суть такая. Текст запроса конструируется в VBA на основе заданных пользователями критериев. Потом этот запрос присваивается форме в качестве источника данных. Т.е. сохраненные запросы не используются.

Интересно, а можно из VBA создать запрос к серверу? Так, чтобы форма потом его в качестве источника приняла....

В Профайлер смотрел. Там запрос выглядит самым банальным образом. Например:

SELECT трам, пам, пам FROM тым-пым-пым WHERE дым-дым-дым ORDER BY ля-ля-ля;

(WHERE конструируется по ходу из пользовательских критериев). А записей, действительно, может быть много. Но не мульен! 15 тыс. максимум!
...
Рейтинг: 0 / 0
SQL Server + MS Access - 2000. Блокировка записей.
    #32438027
Фотография АлексейК
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
надо смотреть что именно тормозит. если тормозят запросы на сервере то хоть через что подключайся тормоза останутся

первым делом сделай нужные индексы
если совсем ничего не понимаешь в этом запусти энтерпрайз менеджер и запусти индекс тюнинг визард

определить что именно тормозит твой сервер поможет профайлер
...
Рейтинг: 0 / 0
SQL Server + MS Access - 2000. Блокировка записей.
    #32438034
incold
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Имхо.

авторИнтересно, а можно из VBA создать запрос к серверу? Так, чтобы форма потом его в качестве источника приняла....

Это не обязательно.
Вполне можно обойтись строкой, которая сформирована из VBA.
Вот только индексы по полям, по которым пользователи делают выборку нужны.

Еще раз имхо.
А еще нужно ограничить кол-во записей.
Я не поверю, что пользователь может эффективно работать с формой, к которой более 1000 записей.
Я не о быстродействии, а об удобстве работы.
...
Рейтинг: 0 / 0
SQL Server + MS Access - 2000. Блокировка записей.
    #32438051
Фотография АлексейК
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а еще и в том числе из MDB можно создать ADO рекордсет, и не использовать ни запросы к серверу ни линкованные таблицы, при этом провадер такойже как и adp - SQLOLEDB
...
Рейтинг: 0 / 0
SQL Server + MS Access - 2000. Блокировка записей.
    #32438058
Фотография АлексейК
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторЯ не поверю, что пользователь может эффективно работать с формой, к которой более 1000 записей

вполне может, если умеет эффективно использовать сортировку и фильтры
...
Рейтинг: 0 / 0
SQL Server + MS Access - 2000. Блокировка записей.
    #32438082
incold
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторвполне может, если умеет эффективно использовать сортировку и фильтры

Так и я о том же.
Зачем задавать два параметра, тянуть с сервера 20 000 записей, чтобы потом сделать фильтр еще по двум параметрам и получить 100 записей.

Почему нельзя сразу задать 3 параметра и получить 100 записей.
...
Рейтинг: 0 / 0
SQL Server + MS Access - 2000. Блокировка записей.
    #32438088
AVKr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Насчет 1000 записей. Пользователи трудновразумляемые. Да и задачи поиска не всегда алгоритмизуемые. Иногда приходится задавать очень общий поиск, посмотреть сколько записей вылезет, потом чесать репу и думать как его уточнить. А иногда сидеть и тупо перебирать 1000 записей в попытке найти свое счастье:))

Дополнительная проблема в том, что несколько полей имеют тип MEMO (т.е. ntext(16)). А с ним вообще тяжело жить.
...
Рейтинг: 0 / 0
SQL Server + MS Access - 2000. Блокировка записей.
    #32438116
incold
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
автор Пользователи трудновразумляемые.

На каждую хитрую ж@#$ есть хр#$ с винтом

Это я к тому что любого пользователя можно вразумить, нужны только разные подходы.

У меня тоже часто встречались варианты: "Хочу так и никак иначе."
На что я отвечал - если сможешь аргументированно доказать для чего нужно я сделаю. А иначе - это не предметный разговор, а поток эмоций.

авторДополнительная проблема в том, что несколько полей имеют тип MEMO (т.е. ntext(16)). А с ним вообще тяжело жить.

А вот это совсем плохо.
Имхо - все-таки нужно искать другой подход в реализации.
Тут больше проблема не техническая, а методологическая.
...
Рейтинг: 0 / 0
SQL Server + MS Access - 2000. Блокировка записей.
    #32438161
Фотография АлексейК
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
автор Дополнительная проблема в том, что несколько полей имеют тип MEMO (т.е. ntext(16)). А с ним вообще тяжело жить.



не правда ваша, очень все хорошо и легко.
на этот случай у MSSQL есть полнотекстовый поиск

авторПочему нельзя сразу задать 3 параметра и получить 100 записей.

потому что бывают такие ситуации что эти 3 параметра нужно сначала найти в этих нескольких десятках тысяч записей..

разумеется если есть возможность определить изначальные критерии то лучше их вынести в элементы управления задающие источник данных фрмы
...
Рейтинг: 0 / 0
SQL Server + MS Access - 2000. Блокировка записей.
    #32438249
incold
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторне правда ваша, очень все хорошо и легко.
на этот случай у MSSQL есть полнотекстовый поиск

Это конечно штука хорошая.
А как он с клиента работает?
Да еще и с MDB.

авторпотому что бывают такие ситуации что эти 3 параметра нужно сначала найти в этих нескольких десятках тысяч записей..

Имхо.
Может и бывают, но это означает только то, что опять хромает методология учета и построения учетной системы.
...
Рейтинг: 0 / 0
SQL Server + MS Access - 2000. Блокировка записей.
    #32438262
AVKr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Во-первых, огромное спасибо всем принявшим участие в обсуждении! Масса тем для размышления, хотя так и не принял решение куда двигаться.

Но вот о чем я думаю: откуда вообще берется в данной ситуации блокировка?

Оператор вводит новую запись, т.е. теоретически вообще не трогает введенные ранее записи. "Просматриватель" ковыряется со старыми, не имея возможности ничего изменить и не имея доступа к новой записи. Так чего же сервер все блокирует? И почему сразу обоим? И почему так надолго? Запрос ведь выполняется буквально 1-2 секунды.

И еще. Может быть, существует вариант, чтобы "просматриватель" в форме работал со статическим набором записей? Т.е. запросил сервер и ковыряешься в том, что нашел. А новые данные получаешь только по следующему запросу.
...
Рейтинг: 0 / 0
SQL Server + MS Access - 2000. Блокировка записей.
    #32438293
Фотография Темный
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
timestamp
...
Рейтинг: 0 / 0
SQL Server + MS Access - 2000. Блокировка записей.
    #32438408
AVKr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Хотелось бы отдать полный приоритет вводильщикам. Просматривальщикам совсем не надо оперативно получать свежие данные. Лишь бы все не блокировалось.
...
Рейтинг: 0 / 0
SQL Server + MS Access - 2000. Блокировка записей.
    #32438449
Фотография Темный
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Временные таблицы для просмотрщиков.
Вся логика на клиенте.
Если будете переходить на Оракл+Аксесс - то минимум изменений, т.к. и там и там через ODBC.
...
Рейтинг: 0 / 0
SQL Server + MS Access - 2000. Блокировка записей.
    #32438483
Фотография АлексейК
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторполнотекстовый поиск

Это конечно штука хорошая.
А как он с клиента работает?
Да еще и с MDB.

а какие проблемы ??? адо запрос , внутри хранимки с параметрами или в представлении.


вот пример из BOL

SELECT title, notes
FROM titles
WHERE CONTAINS ( notes, ' "favorite recipes" OR "gourmet recipes" ' )

Full-text search uses the new Transact-SQL predicates (CONTAINS, CONTAINSTABLE, FREETEXT, and FREETEXTTABLE) to query these populated full-text catalogs

авторНо вот о чем я думаю: откуда вообще берется в данной ситуации блокировка?

а с чего ты взял что блокировка?, может просто неотимальный запрос чрезмерно грузит сервак



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

создай адо рекордсет, подключи его к серверу и назначь его форме рекордсетом

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
Private Sub Form_Load()
Dim rs As New ADODB.Recordset
rs.Open ( "select * from <таблица>" ), _
 "Provider=SQLOLEDB.1 ;Persist Security Info=True;Data Source=<Имясервера>\<Инстанс>;User ID=<Логин>;Password=<Пароль>;Initial Catalog=<Имябазы>", _
adOpenStatic, adLockReadOnly
Set Me.Recordset = rs

End Sub


<параметр> замени на свои вместе с <>

кстати у формы есть свойство «Тип набора записей» (RecordsetType)
его можно сделать статическим
...
Рейтинг: 0 / 0
SQL Server + MS Access - 2000. Блокировка записей.
    #32438519
Фотография Victosha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Тема вряд ли может быть покрыта за один присест - не та овца.
Судя по всему, начать придется с магазина - закупай горох.

Для начала вопросы -
1) как достукиваешься до сервера - через линкованные таблицы?
2) что-то не совсем понятно, про то, что индексов нет - что и PK тоже нет?
как же тогда происходит добавление записей?
3) как отдаешь

Источник проблем может лежать как на стороне mdb, так и на стороне сервера.

На стороне мдб
1) линкованные таблицы - тут влегкую можно сервер заблокировать, ежели открывать одновременно несколько запросов, да еще одновременно выполнять "транзакции" на них. Грубо - причина в том, что количеством соединений к серверу и порядком обращения к данным кишки (Jet) управляет, не спрашивая голову (разработчика). В этом случае типично возможны железные объятия даже просто "при просмотрах".

2) под наборы типа КейСет аксесс открывает глобальные серверные курсоры, что само по себе может просадить слабенький сервачек практически до нуля, при "больших" объемах выборки и множестве соединений.

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

В общем с магазина начинай.
...
Рейтинг: 0 / 0
SQL Server + MS Access - 2000. Блокировка записей.
    #32438839
AVKr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
To Темный:
... временные таблицы... Т.е. с какой-то частотой перекачивать все данные на клиента и там уже делать выборки в свое удовольствие? Что-то во мне противится такому варианта, хотя объяснить не готов. Может, я неправильно понял?

To АлексейК:
насчет ADO буду экспериментировать, т.к. ранее почти не пользовался.

кстати у формы есть свойство «Тип набора записей» (RecordsetType)
его можно сделать статическим"

Не помогает. На сервер приходит обычный запрос, который в свое удовольствие блокирует все на фиг.

Неоптимальный запрос? Вроде непохоже. Запрос простой и отрабатывается моментом. А потом все долго и упорно висит (минуты 2-3).

To Victosha:
Пошел в магазин за горохом:)

Ответы на вопросы -
1) как достукиваешься до сервера - через линкованные таблицы?

Да

2) что-то не совсем понятно, про то, что индексов нет - что и PK тоже нет?
как же тогда происходит добавление записей?

PK, само собой, есть. Не проиндексированы текстовые поля, по которым поиск идет.

3) как отдаешь

Не понял вопрос.

----
А сервачок очень даже не слабенький. Множественных соединений и больших объемов нет. Достаточно двух пользователей: один вводит запись, другой строит незамысловатую выборку и готово - висим.
...
Рейтинг: 0 / 0
SQL Server + MS Access - 2000. Блокировка записей.
    #32439263
Julius
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AVKr:

"Запрос простой и отрабатывается моментом. А потом все долго и упорно висит (минуты 2-3)."

Нет от этого другого спасения, кроме ограничения набора записей, передаваемого с сервера. Это его объем является тормозом при передаче по сети.

Никакая другая СУБД, способ полключения и т.п. не помогут, если будут качаться по сетке многие мегабайты по каждому запросу. Думайте над тем, как помочь пользователям формулировать более конкретные критерии выборки, чем сейчас.
...
Рейтинг: 0 / 0
SQL Server + MS Access - 2000. Блокировка записей.
    #32439325
AVKr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Попробовал сделать идиотизм: после получения по запросу набора записей (rs) в виде DAO.Recordseta вставил строчку rs.MoveLast. И только потом присвоил форме этот рекордсет. Эффект вышел такой: скорость выборки, само собо, заметно упала, зато НИКАКИХ блокировок. Данные вводятся асболютно без тормозов.

Кто-нибудь объяснит тупому что це такое значит?
...
Рейтинг: 0 / 0
SQL Server + MS Access - 2000. Блокировка записей.
    #32439457
Фотография АлексейК
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
это значит что форма загружает данные порциями а ты заставил подгрузиться все записи до назначения их в форму

скажи что тебе не дает поставить для формы готовый код, который я специально для тебя написал, с адо рекордсетом?
может чего непонятно , так я подскажу
...
Рейтинг: 0 / 0
25 сообщений из 31, страница 1 из 2
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / SQL Server + MS Access - 2000. Блокировка записей.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]