powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Access 97 +SQL Server 2000. Блокировка таблицы.
13 сообщений из 13, страница 1 из 1
Access 97 +SQL Server 2000. Блокировка таблицы.
    #32075464
Yran
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Работаю из 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 блокирутся вся таблица. Почему это происходит и как с этим боротся?
...
Рейтинг: 0 / 0
Access 97 +SQL Server 2000. Блокировка таблицы.
    #32075476
sFx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Какая именно ошибка? в настройказ сервера есть тип блокировки при редактировании(по-моему) и еще если Вы используете DAO то надо использовать параметр dbSeeChanges
...
Рейтинг: 0 / 0
Access 97 +SQL Server 2000. Блокировка таблицы.
    #32075505
Yran
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Для SFx.

Какая именно ошибка?

Текст ошибки:
Ошибка выполнения '3146'
ODBC - ошибка вызова


в настройказ сервера есть тип блокировки при редактировании(по-моему)

Где конкретно?

и еще если Вы используете DAO то надо использовать параметр dbSeeChanges

Непонял :-((. Это параметр чего?
...
Рейтинг: 0 / 0
Access 97 +SQL Server 2000. Блокировка таблицы.
    #32075563
sFx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Уважаемый,
ну неужели сложно посмотреть хелп по dbSeechanges?
попробуйте Ваш запрос(который выдает ошибку) выполнить через конструктор запросов тогда может быть описание ошибки будет более информативное.
теперь про блокировки : BOL->Understanding Locking in SQL Server это для начала. далее читаем sp_lock (T-SQL) - это чтобы отследить какая блокировка происходит и наконец смотрим там же в BOL->sp_tableoption (T-SQL)
кстати стоят ли какие SPacks на сервере?
...
Рейтинг: 0 / 0
Access 97 +SQL Server 2000. Блокировка таблицы.
    #32075708
Yran
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Посмотрел. Попробовал все возможные параметры при вызове метода Execute.
Ничего не помогло.
Запустил sp_lock
При открытии или работе появляются след. блокировки
55 10 1701581100 0 PAG 1:143 S GRANT
55 10 1701581100 0 TAB IS GRANT
Насколько я понимаю при этом блокируется таблица.
Это я и так понимал.
И что делать дальше?
...
Рейтинг: 0 / 0
Access 97 +SQL Server 2000. Блокировка таблицы.
    #32075736
sFx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Например использовать хинты. и еще надо смотреть какая блокировка получается при редактрировании таблицы другим пользователем.
а еще можно попробовать делать не "запрос к серверу", а просто аксесовский запрос. все равно он уходит на сервер и там крутится...
кстати блокировка S - это Share, то есть данные можно просматривать....
и еще советую задать свой вопрос на SQL ном форуме, это все же больше по их части....
...
Рейтинг: 0 / 0
Access 97 +SQL Server 2000. Блокировка таблицы.
    #32075753
Yran
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Например использовать хинты.

Попытался использовать, но не понял как указать например хинт RowLock
В операторах:
DELETE FROM Продажи WHERE (Неделя = 48)

Insert Into [Продажи] (Неделя,...) Values (10,...)

В Select понятно, а здесь нет

и еще надо смотреть какая блокировка получается при редактрировании таблицы другим пользователем.

Та которая указана и получается

а еще можно попробовать делать не "запрос к серверу", а просто аксесовский запрос. все равно он уходит на сервер и там крутится...

Получается жутко тормозно

и еще советую задать свой вопрос на SQL ном форуме, это все же больше по их части....

Задал еще утром, но никто ничего не ответил
...
Рейтинг: 0 / 0
Access 97 +SQL Server 2000. Блокировка таблицы.
    #32075756
sFx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: 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.
Syntax
INSERT [INTO] 
    { 
     table_name WITH ( <table_hint_limited> [...n])
     | view_name
     | rowset_function_limited 
    }

    {    [(column_list)] 
        { VALUES ( {    DEFAULT 
                        |    NULL
                        |    expression 
                        }[,...n]
            )
        | derived_table
        | execute_statement    
        }
    }
    | DEFAULT VALUES



<table_hint_limited> ::=
    {    INDEX(index_val [,...n])
        | FASTFIRSTROW
        | HOLDLOCK
        | PAGLOCK
        | READCOMMITTED
        | REPEATABLEREAD
        | ROWLOCK
        | SERIALIZABLE
        | TABLOCK 
        | TABLOCKX
    }


Arguments
...
Рейтинг: 0 / 0
Access 97 +SQL Server 2000. Блокировка таблицы.
    #32075759
Yran
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Это я и сам видел. Хотелось бы конкретно на моих примерах. Потому что как ни ставлю не работает.
...
Рейтинг: 0 / 0
Access 97 +SQL Server 2000. Блокировка таблицы.
    #32075779
sFx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
в вашем примере так
Код: plaintext
1.
Insert Into [Продажи] with (ROWLOCK)  (Неделя, КодТовара, Магазины, Кафе, ГорОпт,ОблОтдел, РегОпт, Москва, Сети, Партнер, 
Агростар, Разные, Остатки) Values ( 104153 ,- 567604212 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 22 . 9 ) 

но я не совсем понимаю как можно, видя хелп и конкретно синтаксис, не суметь сделать сиквельный запрос. :(( ну да ладно.
и опять таки вопрос по серсис пакам... какие стоят.
...
Рейтинг: 0 / 0
Access 97 +SQL Server 2000. Блокировка таблицы.
    #32075901
Yran
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
В том то и дело, что так как вы показали я ужжжже делал.
При этом в Execute опять выдается та же ошибка.
Поэтому я подумал, что пишу неверно.
Сервис паки не установлены, если имеется ввиду SQL Server.
...
Рейтинг: 0 / 0
Access 97 +SQL Server 2000. Блокировка таблицы.
    #32075934
Yran
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Все!!! Вроде прорвался. Просто почему-то не подходили хинты NoLock и RowLock которые я ставил. Из за этого возникала ошибка ODBC. Помудрил немного с хинтами и вроде все стало работать, правда намного медленнее :-((

Спасибо за советы.
...
Рейтинг: 0 / 0
Access 97 +SQL Server 2000. Блокировка таблицы.
    #32076025
sFx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Расскажите уважаемой публике, какие хинты сработали... а лучше текст запроса запостите тут.
...
Рейтинг: 0 / 0
13 сообщений из 13, страница 1 из 1
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Access 97 +SQL Server 2000. Блокировка таблицы.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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