powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Блокировки
13 сообщений из 13, страница 1 из 1
Блокировки
    #32030759
Denis
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Как проверить блокировки (MSSQL-6.5)?
Количество блокировок в sp_configure =1000000
нормально ли это
...
Рейтинг: 0 / 0
Блокировки
    #32030784
Andrew Kurilov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
sp_lock.
Думаю, что очень больших баз на 65 не осталось, поэтому рекомендовал бы 1 нолик убрать. Во всяком случае, у меня несколько месяцев 100000 стояло. Проблем не было.
...
Рейтинг: 0 / 0
Блокировки
    #32030789
Denis
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
я ВХОЖУ ПОД DBO
ПЫТАЮСЬ УДАЛИТЬ ЗАПИСЬ ИЗ ТАБЛИЦЫ А В ИТОГЕ "LOCK TIME OUT"
НЕ МОЖЕТ ЛИ ТАБЛИЦА САМА ЗАБЛОКИРОВАТЬСЯ
ПОТОМУ ЧТО ДРУГИХ ЮЗЕРОВ В КАРЕНТ АКТИВИТИ НЕТ
ПАРАДОКС
ИЛИ СБОЙ В НАСТРОЙКАХ СЕРВЕРА
КОРОЧЕ Я ПОНЯЛ ЧТО Я НЕ МОГУ ЗАБЛОКИРОВАТЬ ТАБЛИЦУ
В НЕЙ 1700000 ЗАПИСЕЙ
МОЖЕТ ЭТО МНОГО
ЧТО ДЕЛАТЬ
...
Рейтинг: 0 / 0
Блокировки
    #32030860
Denis
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасите ну.....
...
Рейтинг: 0 / 0
Блокировки
    #32030862
Andrew Kurilov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Customizing the Lock Time-out
When Microsoft® SQL Server™ 2000 cannot grant a lock to a transaction on a resource because another transaction already owns a conflicting lock on that resource, the first transaction becomes blocked waiting on that resource. If this causes a deadlock, SQL Server terminates one of the participating transactions (with no time-out involved). If there is no deadlock, the transaction requesting the lock is blocked until the other transaction releases the lock. By default, there is no mandatory time-out period, and no way to test if a resource is locked before locking it, except to attempt to access the data (and potentially get blocked indefinitely).



Note The sp_who system stored procedure can be used to determine if a process is being blocked, and who is blocking it.


The LOCK_TIMEOUT setting allows an application to set a maximum time that a statement waits on a blocked resource. When a statement has waited longer than the LOCK_TIMEOUT setting, the blocked statement is canceled automatically, and error message 1222 "Lock request time-out period exceeded" is returned to the application.

However, any transaction containing the statement is not rolled back or canceled by SQL Server. Therefore, the application must have an error handler that can trap error message 1222. If an application does not trap the error, it can proceed unaware that an individual statement within a transaction has been canceled, and errors can occur because statements later in the transaction may depend on the statement that was never executed.

Implementing an error handler that traps error message 1222 allows an application to handle the time-out situation and take remedial action for example, automatically resubmitting the statement that was blocked, or rolling back the entire transaction.

To determine the current LOCK_TIMEOUT setting, execute the @@LOCK_TIMEOUT function, for example:

DECLARE @Timeout int
SELECT @Timeout = @@lock_timeout
SELECT @Timeout
GO


See Also

@@LOCK_TIMEOUT

SET LOCK_TIMEOUT

sp_who

Handling Errors and Messages


Ну а что трассировка дала?
...
Рейтинг: 0 / 0
Блокировки
    #32030864
Denis
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
При удалении появляется левый запрос типа
SELECT Count(Coupon_Number) FROM Coupons where Series_ID=NULL
and Coupon_Number between NULL and NULL
и этот запрос блокирует DELETE
откуда он взялся ума не дам
...
Рейтинг: 0 / 0
Блокировки
    #32030866
Denis
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А функции @@Lock_Timeout в 6,5 нет
более того (как многие советуют sp_who или sp_who2)ничего не кажет
в полях blkby или blk
...
Рейтинг: 0 / 0
Блокировки
    #32030893
Denis
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Трасе ничего не дал
вот данные фильтра после выполнения запроса
-- 22.05.02 14:42:33,296 SQL (ID=657, SPID=98, User=Dima(SONAR\dima), App='Outlay Invoice', Host='DIMA_NT'(38dd) )
SELECT Count(Coupon_Number) FROM Coupons where Series_ID=NULL
and Coupon_Number between NULL and NULL
go
-- 22.05.02 14:42:33,356 SQL (ID=657, SPID=98, User=Dima(SONAR\dima), App='Outlay Invoice', Host='DIMA_NT'(38dd) )
DELETE FROM OutLay_Specification WHERE OutLay_ID=174746 AND Invoice_ID=136879 AND Company_ID=0 AND BASIS_ID=44 AND ASCoupon=0 AND SELLUNIT=1 AND Product_ID=5
go
-- 22.05.02 14:47:33,500 SQL (ID=657, SPID=98, User=Dima(SONAR\dima), App='Outlay Invoice', Host='DIMA_NT'(38dd) )
DELETE FROM OutLay_Specification WHERE OutLay_ID=174746 AND Invoice_ID=136879 AND Company_ID=0 AND BASIS_ID=44 AND ASCoupon=0 AND SELLUNIT=1 AND Product_ID=5
go
...
Рейтинг: 0 / 0
Блокировки
    #32030902
Denis
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
спасите ну...
...
Рейтинг: 0 / 0
Блокировки
    #32030911
ReaperMan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
> При удалении появляется левый запрос
Вообще-то AFAIK "левые запросы" сами не появляются, тем более на основе юзерских таблиц. Триггеры проверь.
...
Рейтинг: 0 / 0
Блокировки
    #32030924
Denis
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Запрос этот оказывается нормально выполняется
SELECT Count(Coupon_Number) FROM Coupons where Series_ID=NULL
and Coupon_Number between NULL and NULL
это я сужу по след строке
-- 22.05.02 16:34:24,153 SQL (ID=876, SPID=122, User=Dima(SONAR\dima), App='Outlay Invoice', Host='DIMA_NT'(38e0) )
SELECT Count(Coupon_Number) FROM Coupons where Series_ID=NULL
and Coupon_Number between NULL and NULL
go
-- 22.05.02 16:34:24,170 Duration 0,016, CPU 0,000, Reads 1, Writes 0
а вот этот совсем плохой
судя по Duration
-- 22.05.02 16:34:24,170 SQL (ID=876, SPID=122, User=Dima(SONAR\dima), App='Outlay Invoice', Host='DIMA_NT'(38e0) )
DELETE FROM OutLay_Specification WHERE OutLay_ID=174746 AND Invoice_ID=136879 AND Company_ID=0 AND BASIS_ID=44 AND ASCoupon=0 AND SELLUNIT=1 AND Product_ID=5
go
-- 22.05.02 16:39:24,183 Duration 300,013, CPU 1,125, Reads 23463, Writes 0
вешаюсь
...
Рейтинг: 0 / 0
Блокировки
    #32031002
Чумак А.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
1.Попробуйте удалять не из вашего приложения "App='Outlay Invoice'" а из QA. В trace видно ведь, что именно ваше приложение генерит "злобный" селект, а не триггер.
2.Посмотрите внимательно на этот селект. Вам ничего не говорит такая штука как [singleton fetch of nonexistent data] и эскалация блокировок до уровня таблицы либо key range? Сервер мог запросто блоконуть всю таблицу либо хорощий ее кусок в результате выполнения SELECT Count(Coupon_Number) FROM Coupons where Series_ID=NULL
and Coupon_Number between NULL and NULL аккурат перед делитом. Вот такие соображения.

удачи
...
Рейтинг: 0 / 0
Блокировки
    #32031027
Denis
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Я уже удалял из QA Результат тот же(очень долго)
правда без паразитного запроса
...
Рейтинг: 0 / 0
13 сообщений из 13, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Блокировки
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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