Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Access 97 +SQL Server 2000. Блокировка таблицы.
|
|||
|---|---|---|---|
|
#18+
Работаю из Access 97 с SQL Server 2000 путем присоединения таблицы через ODBC и с помощью запросов к серверу. Делаю следующее: 1. Создаю временную таблицу на основе части данных присоединенной таблицы через ODBC. Буру данные по продажам за определенную неделю. 2. Произвожу над этими данными ряд операций 3. Стираю данные в таблице на SQL Server за эту неделю с помощью запроса к серверу с помощью VBA. Упрощенно таким образом: Dim QDef As QueryDef Set QDef = dbc.CreateQueryDef("") With QDef .ReturnsRecords = False .Connect= "ODBC;DSN=DataStat;Description=Статистика;UID=Georg;... и т.д" .SQL = "DELETE FROM Продажи WHERE (Неделя = 48)" .Execute End With 4. Затем закачиваю измененные данные на сервер c помощью динамически создаваемого запроса Insert Into вида: Insert Into [Продажи] (Неделя, КодТовара, Магазины, Кафе, ГорОпт,ОблОтдел, РегОпт, Москва, Сети, Партнер, Агростар, Разные, Остатки) Values (104153,-567604212,0,0,0,0,0,0,0,0,0,0,22.9) Если никто не работает с этой таблицей все работает нормально. Но если там в момент вливания кто-нибудь изменяет любые данные, даже те которые никак не участвуют в операциях при попытке выполнения операций с таблицей возникает ошибка ODBC. Видимо при любой работе с таблицей на SQL Server блокирутся вся таблица. Почему это происходит и как с этим боротся? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.12.2002, 11:01 |
|
||
|
Access 97 +SQL Server 2000. Блокировка таблицы.
|
|||
|---|---|---|---|
|
#18+
Какая именно ошибка? в настройказ сервера есть тип блокировки при редактировании(по-моему) и еще если Вы используете DAO то надо использовать параметр dbSeeChanges ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.12.2002, 11:22 |
|
||
|
Access 97 +SQL Server 2000. Блокировка таблицы.
|
|||
|---|---|---|---|
|
#18+
Для SFx. Какая именно ошибка? Текст ошибки: Ошибка выполнения '3146' ODBC - ошибка вызова в настройказ сервера есть тип блокировки при редактировании(по-моему) Где конкретно? и еще если Вы используете DAO то надо использовать параметр dbSeeChanges Непонял :-((. Это параметр чего? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.12.2002, 11:58 |
|
||
|
Access 97 +SQL Server 2000. Блокировка таблицы.
|
|||
|---|---|---|---|
|
#18+
Уважаемый, ну неужели сложно посмотреть хелп по dbSeechanges? попробуйте Ваш запрос(который выдает ошибку) выполнить через конструктор запросов тогда может быть описание ошибки будет более информативное. теперь про блокировки : BOL->Understanding Locking in SQL Server это для начала. далее читаем sp_lock (T-SQL) - это чтобы отследить какая блокировка происходит и наконец смотрим там же в BOL->sp_tableoption (T-SQL) кстати стоят ли какие SPacks на сервере? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.12.2002, 13:23 |
|
||
|
Access 97 +SQL Server 2000. Блокировка таблицы.
|
|||
|---|---|---|---|
|
#18+
Посмотрел. Попробовал все возможные параметры при вызове метода Execute. Ничего не помогло. Запустил sp_lock При открытии или работе появляются след. блокировки 55 10 1701581100 0 PAG 1:143 S GRANT 55 10 1701581100 0 TAB IS GRANT Насколько я понимаю при этом блокируется таблица. Это я и так понимал. И что делать дальше? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.12.2002, 16:40 |
|
||
|
Access 97 +SQL Server 2000. Блокировка таблицы.
|
|||
|---|---|---|---|
|
#18+
Например использовать хинты. и еще надо смотреть какая блокировка получается при редактрировании таблицы другим пользователем. а еще можно попробовать делать не "запрос к серверу", а просто аксесовский запрос. все равно он уходит на сервер и там крутится... кстати блокировка S - это Share, то есть данные можно просматривать.... и еще советую задать свой вопрос на SQL ном форуме, это все же больше по их части.... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.12.2002, 17:15 |
|
||
|
Access 97 +SQL Server 2000. Блокировка таблицы.
|
|||
|---|---|---|---|
|
#18+
Например использовать хинты. Попытался использовать, но не понял как указать например хинт RowLock В операторах: DELETE FROM Продажи WHERE (Неделя = 48) Insert Into [Продажи] (Неделя,...) Values (10,...) В Select понятно, а здесь нет и еще надо смотреть какая блокировка получается при редактрировании таблицы другим пользователем. Та которая указана и получается а еще можно попробовать делать не "запрос к серверу", а просто аксесовский запрос. все равно он уходит на сервер и там крутится... Получается жутко тормозно и еще советую задать свой вопрос на SQL ном форуме, это все же больше по их части.... Задал еще утром, но никто ничего не ответил ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.12.2002, 17:41 |
|
||
|
Access 97 +SQL Server 2000. Блокировка таблицы.
|
|||
|---|---|---|---|
|
#18+
Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.12.2002, 17:49 |
|
||
|
Access 97 +SQL Server 2000. Блокировка таблицы.
|
|||
|---|---|---|---|
|
#18+
Это я и сам видел. Хотелось бы конкретно на моих примерах. Потому что как ни ставлю не работает. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.12.2002, 17:53 |
|
||
|
Access 97 +SQL Server 2000. Блокировка таблицы.
|
|||
|---|---|---|---|
|
#18+
в вашем примере так Код: plaintext 1. но я не совсем понимаю как можно, видя хелп и конкретно синтаксис, не суметь сделать сиквельный запрос. :(( ну да ладно. и опять таки вопрос по серсис пакам... какие стоят. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.12.2002, 18:13 |
|
||
|
Access 97 +SQL Server 2000. Блокировка таблицы.
|
|||
|---|---|---|---|
|
#18+
В том то и дело, что так как вы показали я ужжжже делал. При этом в Execute опять выдается та же ошибка. Поэтому я подумал, что пишу неверно. Сервис паки не установлены, если имеется ввиду SQL Server. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.12.2002, 09:46 |
|
||
|
Access 97 +SQL Server 2000. Блокировка таблицы.
|
|||
|---|---|---|---|
|
#18+
Все!!! Вроде прорвался. Просто почему-то не подходили хинты NoLock и RowLock которые я ставил. Из за этого возникала ошибка ODBC. Помудрил немного с хинтами и вроде все стало работать, правда намного медленнее :-(( Спасибо за советы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.12.2002, 10:32 |
|
||
|
|

start [/forum/topic.php?fid=45&msg=32075505&tid=1682777]: |
0ms |
get settings: |
5ms |
get forum list: |
15ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
36ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
50ms |
get tp. blocked users: |
1ms |
| others: | 208ms |
| total: | 330ms |

| 0 / 0 |
